为什么CPython在两个测试"slowspitfire"和"waf"上比PyPy更快?

kno*_*orv 8 python benchmarking pypy cpython

从PyPy Speed Center上发布的基准测试来看,似乎除了两个测试之外的所有测试,PyPy比CPython更快.

在两个测试"slowspitfire"和"waf"中,CPython比PyPy更快.这是为什么?这两项测试测试的是哪种操作?是什么让CPython更快地进行这些操作?PyPy能否在这两项测试中赶上并击败CPython?

Mu *_*ind 8

正如Tobu所说,邮件列表上有一条消息,其中描述了slowspitfire的解释:包含GC对象的长列表以及其他因素.

waf基准测试在性能方面的差异较小,我猜测答案会更复杂:PyPy做得更好的一些因素,CPython做得更好的一些因素,整体CPython略微领先.

通常,JIT优化实现的速度有几个原因:

  • JIT的一般开销和检查是否JIT
  • CPU内存权衡:使用太多内存来节省太多的CPU时间,或者不得不使用更多的分页
  • JIT过于激烈,或者在错误的时间JIT错误的代码