14

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

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

1 回答 1

13

BitBucket 上的 PyPy wiki有一个关于JIT 友好性的部分。一些博客文章提供了有关使代码在 PyPy 中快速运行的进一步建议,但 AFAIK 的想法是,不强制解释/实现帧的惯用代码应该很快,如果不是,那就是一个错误。

我知道对于 3,一些“assert x > 0”或类似的语句可能很有用,但我不记得我在哪里看到的。我也相信我已经看到了一些关于重构与 4 相关的条件路径循环的建议(编辑:这现在似乎已经过时了)。

这是一个带有一些相关讨论的线程您可以使用jitviewer检查 JIT 与您的代码一起工作的情况,但它有点先进。在 Freenode 上加入 #pypy 将为您提供有关 jitviewer 和您的特定代码的帮助。

于 2011-03-15T21:37:35.860 回答