一款Windows PC端待办事项软件
登录   注册



不同版本Python的速度对比 (从Python 2.7 到 Python 3.9)



随着python3.8的发布,python3.X版本首次明显击败python2.7,当时运行的是我大约十年前编写的速度测试脚本。

这不是一个专门比较不同版本Python的每个功能方面性能的脚本,它的编写是因为大约十年前我开发了一个纯Python ODBC模块(pypyodbc),我很好奇这个模块在Python的不同实现上运行得有多差或快,包括:CPython 2.X、CPython 3.X、pypy甚至IronPython。

虽然在上述所有解释器上,这个纯python模块可以正常运行,但性能排名始终是:PyPy>cpython2.7>cpython3.X>IronPython

一些有趣的发现是:

  • PyPy显然是最快的,在运行脚本时,可以看到它总是以秒一秒的速度加速。

  • 令人惊讶的是,IronPython在我的例子中并不是很慢,它的性能大约是CPython2.7的80%,但是启动时间非常明显。

  • 在python3.8来到之前,cpython3.X一直比python2.7慢。

因此,Python 3.8后的性能排名:

pypy>cpython3.8>cpython2.7>=cpython3.7>IronPython

它终于比Python2.7快了一点。考虑到出于兼容性的目的,测试脚本和模块本身是以2.X和3.X都可以运行的方式编写的,但是对于python2.7更友好,如果代码是用3.X语法编写的,那么3.X解释器的性能应该更好。

Python 3.9更新

虽然是新版本,但我测下来Python3.9 (RC1)比Python3.8稍慢,但仍比Python2.7快一点

pypy>cpython3.8>cpython3.9(rc)>cpython2.7>=cpython3.7>IronPython

下面是这个速度测试脚本的具体输出:


PyPy Total time: 82.7630000114 Python39 (rc1) Total time: 101.15190100669861 Python38 Total time: 100.8603937625885 Python27 Total time: 102.473999977 Python37 Total time: 102.69862222671509 IronPython Total time: 124.058876038








番茄人生知乎用户群



联系作者