随着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比Python3.8稍慢,但仍比Python2.7快一点
pypy>cpython3.8>cpython3.9>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