问题 Python的JIT编译器的优点和缺点


我现在知道以下Python JIT编译器:Psyco,PyPy和Unladen Swallow。

基本上,我想询问您对这些编译器的优缺点的个人经验 - 以及是否还有其他值得研究的内容。

提前致谢,

AZ


6225
2018-05-29 01:49


起源

这是一个非常广泛的问题。你有没有尝试过这些项目?如果没有,我会建议尝试。如果是的话,那你有什么具体问题吗?我们无法确定哪个是最好的 为你。 - Greg Hewgill
我很乐意,但是我已经到了最后期限,我的主管也没有考虑延期。所以,如果你能推荐一个好的起点,我真的很感激。或者,即使最简单的开始也会很好。一旦我获得更多信息,我可能会更新。 - PizzAzzra
我不确定 任何 这些项目目前适合生产使用。你有没有考虑过 py2exe? - Greg Hewgill
@GregHewgill:AFAIK py2exe不进行JIT / AOT编译。它只是将vm和代码捆绑在同一个文件中,因此perf依赖于底层的python实现 - Sudarshan S


答案:


Christian Perone非常出色 文章 从几天前他声称(支持基准数据) PyPy 现在是最快的,在145秒内运行基准测试,而Unladen Swallow为300秒,CPython为374(Psyco没有帮助,实际上PsycoV2将基准测试降低到434秒),Jython为557 - 请参阅我刚给出的URL所有细节。

当然,您需要在广泛的基准测试中确认这一点,但它确实看起来可信且非常有趣。 Pypy拥有最大的团队(多年来,包括几年来得到欧盟研究基金的慷慨货币支持),这就是为什么它现在“完全适应”并准备好迎接黄金时段是相当可信的! - )


10
2018-05-29 01:59



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


您可能会调查一些其他工具来加速python

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

1
2017-08-27 01:07



jnnnnn当你在numba中编译时,你是否必须手动配置'ast'lvvm?我一直试图让它工作,但我一直在同一个地方结束(Key Error <class'ast.In'>)所以我认为它与LLVM本身有关。 - Ryan G