为PyPy的JIT编写快速代码的指南

时间:2011-03-15 21:14:05

标签: python compilation jit pypy optimization

PyPy的JIT可以使Python代码的执行速度比CPython快得多。是否有一组编写可以通过JIT编译器更好地优化的代码的指南?例如,Cython可以将一些静态代码编译成C ++,并且它有guidelines来编写有效的代码。 PyPy有一套好的做法吗?我知道PyPy项目在为其他动态语言编写自己的支持JIT的解释器的同时包含hints的指南,但这与框架的大多数最终用户无关,他们只是使用解释器。我想知道的问题包括:

  1. 将脚本打包成函数
  2. 明确删除变量
  3. 提供或暗示变量类型的可能方式
  4. 以某种方式编写循环

1 个答案:

答案 0 :(得分:13)

PyPy wiki's at BitBucketJIT Friendliness部分。一些博客文章提供further advice使代码在PyPy中快速运行,但AFAIK的想法是,不强制解释/实现框架的惯用代码应该很快,如果不是,则是一个错误。

我知道对于3,一些“断言x> 0”或类似的陈述可能有用,但我不记得我在哪里看到它。我也相信我已经看到一些关于refactoring conditional-paths-in-loops与4相关的建议(编辑:现在好像是outdated)。

这是一个thread with some related discussion。您可以使用jitviewer检查JIT处理代码的效果,但它有点先进。加入Freenode上的#pypy将为您提供jitviewer和您的特定代码的帮助。