为什么CPython在“slowspitfire”和“waf”两个测试上快于PyPy?
根据在PyPy速度中心发布的基准测试来看,PyPy在大多数测试中都比CPython快,只有两个测试例外。
在“slowspitfire”和“waf”这两个测试中,CPython的速度比PyPy快。这是为什么呢?这两个测试主要测试什么操作?是什么让CPython在这些操作上更快?未来PyPy能否赶上并超越CPython在这两个测试中的表现呢?
1 个回答
8
正如Tobu所说,在邮件列表上有一条消息,大致解释了slowspitfire的问题:主要是因为里面有很多长列表和垃圾回收(GC)对象等因素。
waf基准测试的性能差异没有那么明显,我猜这背后的原因会更复杂:有些方面PyPy做得更好,有些方面CPython做得更好,整体上CPython稍微领先一点。
一般来说,JIT优化的实现速度变慢可能有几个原因:
- JIT编译和检查是否需要JIT的额外开销
- CPU和内存之间的权衡:使用过多的内存来节省很少的CPU时间,或者需要更多的分页
- 过于激进地进行JIT编译,或者在错误的时间编译了错误的代码