我已经听到很多有关PyPy项目的信息。他们声称它比其站点上的 CPython解释器快 6.3 倍。
每当我们谈论诸如 Python 之类的动态语言时,速度都是头等大事。为了解决这个问题,他们说 PyPy 快 6.3 倍。
第二个问题是并行性,臭名昭著的Global Interpreter Lock (GIL)。为此,PyPy 表示可以提供无 GIL 的 Python 。
如果 PyPy 可以解决这些巨大的挑战,那么它的哪些弱点在阻止更广泛的采用呢?也就是说,是什么阻止了像我这样的人(一个典型的 Python 开发人员)现在立即切换到 PyPy?
注意: PyPy 现在比 2013 年问这个问题时更加成熟,并且得到了更好的支持。避免从过时的信息中得出结论。
我会说,这些是影响我的主要原因。
该网站不主张 PyPy 比 CPython 的快 6.3 倍。报价:
所有基准的几何平均值比 CPython 快 0.16 或 6.3 倍
这与您所做的一揽子声明完全不同,当您了解差异时,您将至少了解一组不能仅仅说 “使用 PyPy” 的原因。听起来好像我很挑剔,但是了解为什么这两个陈述完全不同是至关重要的。
分解:
他们所做的陈述仅适用于他们所使用的基准。它完全没有说明您的程序(除非您的程序与其基准之一完全相同)。
该声明大约是一组基准的平均值。没有人声称运行 PyPy 甚至可以为他们测试过的程序带来 6.3 倍的改进。
没有人声称 PyPy 甚至可以运行 CPython 运行的所有程序,更不用说更快了。
由于 pypy 并非 100%兼容,因此需要 8 gig 的 ram 进行编译,是一个不断变化的目标,并且高度试验性,而 cpython 是稳定的,这是模块构建者默认的目标,已有 20 年了(包括对 pypy 不起作用的 c 扩展名) ),并且已经广泛部署。
Pypy 可能永远不会成为参考实现,但它是一个很好的工具。