4

我有一个 Python 项目,其中性能相当重要。老实说,我知道 Python(至少是纯 Python)不是这项工作的最佳工具,但无论如何我都在使用它,因为我想分发一些研究代码的非常简单的纯 Python 版本,以便人们可以修改它,等,而无需设置复杂的环境。(我还有一个替代实现,用 D 编写,速度更快但更难破解。)

我使用 PyPy 作为我的解释器,并向使用此代码的任何人推荐它。这给了我合理的速度。然后我决定调整算法并需要从 SciPy 访问一些函数(我只需要 CDF、生存函数和卡方分布的逆 CDF)。我尝试在 CPython 中运行我的代码来访问 SciPy,它的速度就像糖蜜一样慢。

有人可以建议三件事之一:

  1. 一个允许我使用来自 PyPy 的 SciPy 的一些零碎的东西。

  2. 更好的是,在自由许可下,我需要的卡方分布函数的纯 python实现?

  3. 一种从 CPython 中 JIT 瓶颈的方法?我知道 Psyco,但它似乎无人维护,仅适用于 32 位系统。

4

1 回答 1

5

SciPy 还不能在 PyPy 上运行,尽管有一些工作可以相对较快地实现它,前提是您愿意每晚使用并进行少量调整,因此您只使用受支持的 numpy 子集(无论如何都会迅速扩展)。如果时间紧迫,我建议您暂时尝试将 SciPy 函数移植到 Python(它们应该相对简单,但仍然有效)。PyPy 网站上还有一个 numpy 筹款活动,可以让这一切更快发生:)

编辑:这是通过嵌入 CPython 在 pypy 上运行的 matplotlib:http: //baroquesoftware.com/~fijal/extreme_hacks.png

EDIT2:例如阅读http://morepypy.blogspot.com/2011/12/plotting-using-matplotlib-from-pypy.html

干杯,菲亚尔

于 2011-12-07T20:17:43.263 回答