【问题标题】:Julia's Python performance example in pypypypy 中 Julia 的 Python 性能示例
【发布时间】:2012-06-02 06:45:09
【问题描述】:

Julia 是一种新的统计编程语言,声称其性能明显优于竞争语言。我正在尝试验证这一点。 Julia 有一个用 Python 编写的性能测试: https://github.com/JuliaLang/julia/blob/master/test/perf/perf.py

我无法让它与 pypy 一起工作。也许这是由于 numpypy 与 numpy 不兼容,但我还没有走得足够远来确定这一点。我遵循了 ImportError 的建议 "...or just write 'import numpypy' first in your program...",但我得到了另一个 ImportError:"No module named numpy.linalg"

我对 Python 的使用经验几乎为零,我正在寻找一个可以运行的完整解决方案。让它工作的好处是我们可以进行苹果对苹果(jit lang-to-jit lang)的比较。

【问题讨论】:

  • 这意味着它找到了numpy但没有找到numpy.lingalg,但是有numpy模块模块。这很可能是安装问题或版本兼容性差异或 numpy 不兼容。我建议您直接联系 Numpy PyPy 实现作者。错误的完整代码和完整回溯对于解决此问题非常有用。
  • 我不确定我是否安装了 Numpy pypy。我克隆了 repo 并尝试在 root 和 /core 中运行 setup.py。在 root 中,我被告知我正在运行错误的设置。在核心我得到一个 ImportError:没有名为 genapi 的模块。我尝试通过 pip 安装模块,但找不到。
  • 如果有人能让它发挥作用,我很想看看这个比较。
  • buildbot.pypy.org/numpy-status/latest.html,ATM 不支持linalg。 @StefanKarpinski:您是否有兴趣重写以使其与 PyPy 今天支持的任何东西一起工作?顺便说一句,这是他们跟踪器中的 RFE:bugs.pypy.org/issue915

标签: python numpy python-2.7 pypy julia


【解决方案1】:

在纯 Python 中对 Julia git (perf.py) 进行了 4 个测试。 在这里,我在同一台计算机上运行 perf.py(仅纯 Python 测试)和 perf.pl 进行比较。 我有点担心 Python/Pypy 的时机:/

还有……为什么

## fibonacci ##

def fib(n):
    if n<2:
        return n
    return fib(n-1)+fib(n-2)

在 Pypy 中比在 Python 中慢?


我在https://bugs.pypy.org/issue1344 中发布了这个问题 [Pypy 的递归速度比 Python2.7、Python3.2 和 Julia 慢] 我得到下一个答案:

这是一种预热时间非常重要的情况(它试图 内联所有递归),但是一旦你热身它实际上非常快。

所以,我为 fib(n) 使用不同数量的 n 文本。确实,Pypy 比 Python 快,n > 30,但递归比 Julia 慢:

[ en bold更快的python实现]


因为使用递归实现,快速排序和 fib 在 Pypy 中速度较慢。 Julia 似乎比 PyPy 快。

【讨论】:

  • 好东西,迭戈。虽然我不完全确定这如何翻译为“Julia 和 PyPy 具有相同的性能”。这看起来很像“朱莉娅总是赢,而且经常赢很多”;-)
  • 我通过计算阶乘而不是 fib 来测试数学测试。从这个测试中,我得到了 CPython 比 Pypy 快一点的结果。我真的不知道为什么 CPython 的数学性能比 Pypy 好。
【解决方案2】:

Linalg 目前尚未实施。我认为一个新的 ffi 并推出 1.9(这需要相当多的 numpy 修复,请参阅错误跟踪器)正在成为重中之重。我不认为现在拥有linalg 有那么有趣。我们希望首先运行更多的 numpy。不过,我愿意被说服。论据?

【讨论】:

  • 我不能争辩说我对 pypy v. julia 的好奇心比你已经安排好的优先级更高 =) 也许其他人被 linalg 阻止并且可以加入。或者根据 @TryPyPy 的建议 julia perf 代码可以用 PyPy 今天支持的任何东西重写
  • 它稍微复杂一些。 PyPy numpy 支持不仅未完成,而且性能也不完全是我想要的。因此,即使您可以运行基准测试,我也不清楚(现在)我是否会对结果感到满意。所以整个过程有点复杂:)
猜你喜欢
  • 2014-01-04
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 2014-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多