Python的JIT编译器的优缺点

11
我目前知道以下Python JIT编译器:Psyco、PyPy和Unladen Swallow。
基本上,我想请您分享一下对这些编译器的优点和缺点的个人经验,以及是否有其他值得研究的编译器。
谢谢您提前的帮助,
Az

这是一个非常广泛的问题。你尝试过这些项目吗?如果没有,我建议你试一试。如果有,那么你有什么具体的问题吗?我们不能决定哪个对来说是最好的。 - Greg Hewgill
我很愿意帮忙,但是我现在正赶着截止日期,而且我的主管不同意延期。所以,如果你能推荐一个好的起点,我会非常感激。或者,就算是最容易入手的也行。一旦我获得更多信息,我可能会更新。 - PizzAzzra
我不确定这些项目中是否有任何一个适合目前的生产使用。您考虑过py2exe吗? - Greg Hewgill
2
据我所知,py2exe不进行JIT / AOT编译。它只是将虚拟机和代码捆绑在同一个文件中,因此性能取决于底层的Python实现。 - Sudarshan S
2个回答

10

Christian Perone在几天前发表的文章中声称(并支持基准数据),现在PyPy是最快的,运行基准测试需要145秒,而Unladen Swallow和CPython分别需要300秒和374秒(实际上Psyco不能提高性能,PsycoV2甚至会使基准测试时间延长至434秒),Jython需要557秒-有关所有详细信息,请参见我刚才给出的URL。

当然,你需要在广泛的基准测试上进行确认,但它似乎非常可信且非常有趣。Pypy拥有最大的团队(包括获得欧盟研究拨款多年的慷慨资金支持),这就是为什么它很可信,现在已经“全面启动”并准备好进入主流市场!-)


1
哇,好棒的更新!很有趣看到JIT性能比CPython更好,我也会开始测试它 :) - catchmeifyoutry
评论中有一些负面结果。你尝试过在自己的项目中使用PyPy吗?你能比较一下它与CPython的性能吗? - Andriy Tylychko
1
PyPy很好,我只希望他们支持Py3K,而不是强制选择快速的Python 2.x和慢速的Python 3.x之间的抉择。 - Sudarshan S

1

您可能想要调查一些其他工具来加快Python速度,这些工具包括:

  • Cython,需要对相关方法中的所有变量进行类型说明,然后静态编译该方法。
  • Numba,需要LLVM但是是JIT(必须使用参数类型装饰方法才能进行编译)。

在使用Numba编译时,是否需要手动配置“ast”LLVM?我一直在尝试让它工作,但最终都遇到了同样的问题(Key Error<class 'ast.In'>)。因此,我认为这与LLVM本身有关。 - Ryan G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接