如果PyPy的速度提高了6.3倍,为什么我不应该在Python上使用PyPy?

我一直听到很多关于PyPy项目的消息。 他们声称它比他们网站上的CPython解释器快6.3倍。

每当我们谈论像Python这样的动态语言时,速度就是最重要的问题之一。 为了解决这个问题,他们说PyPy的速度提高了6.3倍。

第二个问题是并行,即臭名昭着的全球口译员锁(GIL)。 为此,PyPy说它可以给GIL少的Python。

如果PyPy能够解决这些重大挑战,那么它的弱点在哪些方面会阻止更广泛的采用? 也就是说,什么阻止像我这样的典型的Python开发人员现在切换到PyPy?


  • 正如其他人已经很快提到的那样,PyPy 对C扩展的支持非常薄弱 。 它有支持,但通常以低于Python的速度运行,并且最好也是如此。 因此很多模块只需要CPython。 Cython和Numpy对于数字来说非常棒,而大多数真正需要Python速度的人都会大量使用这些(+ Pandas,SciPy等)。 由于它们要么不存在,要么得到很少的支持,并且需要快速Python的人们放慢速度和易用性往往会更好地利用CPython
  • Python 3支持目前是实验性的。 刚刚达到稳定! 截至2014年6月20日,PyPy3 2.3.1 - 支点出局!
  • 对于“脚本”,PyPy实际上并不是更快,很多人使用Python。 这些是短时间运行的程序,可以做一些简单而小巧的事情。 由于PyPy是一个JIT编译器,它的主要优点来自长时间运行和简单类型(如数字)。 坦率地说,与CPython相比, PyPy的pre-JIT速度相当糟糕
  • 惯性 。 转移到PyPy通常需要重新组合,对于某些人员和组织来说,这只是太多的工作。
  • 这些都是影响我的主要原因,我会说。

    注意:这个问题是古老的! 避免从过时的信息中得出结论。


    该网站并没有声称PyPy比CPython快6.3倍。 去引用:

    所有基准的几何平均值比CPython快0.16或6.3倍

    这是对你所做的全面陈述的一个非常不同的陈述,当你明白其中的差异时,你至少会理解一组为什么你不能说“使用PyPy”的理由。 这可能听起来像我挑选,但理解为什么这两个陈述完全不同是至关重要的。

    打破这一点:

  • 他们所作的陈述仅适用于他们使用的基准。 它对你的程序一无所知(除非你的程序和他们的基准程序完全一样)。

  • 该声明是关于一组基准的平均值 。 没有人声称,即使对于他们测试过的程序,运行PyPy也会提高6.3倍。

  • 没有人声称PyPy甚至可以运行CPython运行的所有程序 ,更不用说更快了。


  • 因为pypy不是100%兼容的,所以需要8个ram来编译,是一个移动的目标,并且是高度实验性的,其中cpython是稳定的,这是二十年来模块构建者的默认目标(包括不能在pypy上工作的c扩展) ),并已广泛部署。

    Pypy可能永远不会成为参考实现,但它是一个很好的工具。

    链接地址: http://www.djcxy.com/p/2475.html

    上一篇: Why shouldn't I use PyPy over CPython if PyPy is 6.3 times faster?

    下一篇: When to use CouchDB over MongoDB and vice versa