不要再纠结Python哪个版本好,2020年⽤Python3就对了
2020年⽤Python3就对了!Python 3⽐Python 2慢吗?哪⼀个版本的Python 3最快?不要再纠结Python哪个版本好!还有什么其他措施可以提⾼速度?哪个版本的Python最快?当然,“它取决于”许多因素,但是它取决于什么,我们应该如何为我们的应⽤程序到最快的Python版本?关于这些问题,今天我将尝试做⼀些测试。
使⽤Python性能测试器
正如我之前在⽹站上提到的,Python的核⼼团队⾮常关⼼性能,这对于⽐较CPython版本的“官⽅”基准⾮常有⽤。
然⽽,在这个测试中仍然存在⼀些问题:
学python看谁的视频比较好 测试结果不容易理解。
PyPy不包括在测试中。
⾸先,执⾏命令pip安装性能下载测试程序,然后执⾏以下命令:
py performance run-python={ choosed _ python _ runtime }-o my _ results . JSON
该指令将多次运⾏⼀系列针对Python⽬标版本的“真实”应⽤程序测试程序,并记录测试结果的平均值。
在本⽂中,我主要测试了以下版本的Python:
2.7.10,
3.4.4、
3.5.4、
3.6.1、
3.7(beta 2).
此外,还测试了PyPy(5.6)和PyPy3(5.4.10)。
试验结果
我已经根据这组测试⽤例进⾏了测试,每个⼈都可以查看测试结果。当然,您也可以编写⾃⼰的测试⽤例并运⾏⾃⼰的测试。
我还编写了⼀个简单的脚本来获取性能数据⽂件列表,并为每个测试结果制作了⼀个⾮常直观的图表。我把这个脚本的代码放到了GitHub上(见⽂章末尾的链接)。
在所有图表中,结果以秒为单位,数值越低,性能越好。
有关完整的测试结果和图表,您可以查看以下链接:
我认为重要的测试包括在⾥⾯。其余的测试与已经进⾏的测试相似,并且已经包含在结论中。
可以参考我之前的⽂章:
呈现HTML模板
django_html测试将使⽤django模板呈现引擎创建⼀个150⾏150列的html表。它使⽤Django引擎的内容和模板类。Python3.7⽐Python 2.7快1.19倍,但是除了Python3.7之外,所有版本的Python 3都⽐Python 2.7慢。该结果与⽹站的测试结果⼀致。
PyPy的测试结果显⽰,它⽐任何Python版本的CPython运⾏得都快,⽽Py3的速度是PyPy的两倍。应该注意的是,Django最近决定放弃对Django 2.0及更⾼版本中的Python 2的⽀持,这意味着PyPy将不再与Django 2兼容。
开始时间
该测试主要⽤于测试Python解释器启动所需的时间。如果您计划运⾏多个进程来打破Python的“GIL”约束,这⼀点⾮常重要。
我将跳过pypypy,尤其是PyPy3,我将在⽂章的最后讨论它。
从上图可以看出,Python 2.7的启动时间最短。
加密测试:crypto_paes
在加密测试中,您会发现Python 2⽐Python 3快得多。原因是什么?因为加密需要⼤量的数字运算,所以Python 3丢弃32位整数,代之以长整数。
对于PyPy⽤户,你应该注意到Py3⽐PyPy慢5倍!
算法测试:n皇后
这个算法可能不会让每个⼈都感到舒服。⽤这种算法进⾏测试可能会带回⼀些⼈在算法课上经历过的不愉快记忆。对此我只能说抱歉。这个算法的规则实际上⾮常简单,即在棋盘上放置n个“皇后”,以确保任何两个“皇后”不在同⼀⾏、同⼀列或同⼀斜线上,这样它们就不能互相攻击。
在CPython系列中,Python3.7再次在性能⽅⾯领先。另外,PyPy和Py3的测试结果⾮常相似。
浮点操作
在浮点操作的测试中,我将通过s()、math.sin()和math.sqrt()⼈⼯创建⼀个重浮点操作应⽤程序,总共创建100,000个浮点对象。
从测试结果可以看出,PyPy⾮常适合浮点操作。PyPy在⼤量数据处理、可预测的类型和⽅法以及周期⽅⾯显⽰出了出⾊的性能。因为Python 3.7有⼀个新的快速⽅法调⽤操作码,所以它是CPython中最快的。正规表达式
在正则表达式测试中,“我使⽤了⽹络上50个最流⾏的⽹页,并记录了所有的正则表达式操作。每个操作都有⼀个权重,该权重是根据页⾯的受欢迎程度和每个页⾯的加载次数来计算的。最后,ROT13⽤于对数据中的字母进⾏编码,这不会影响正则表达式匹配其输⼊的⽅式。”
在这次测试中,我不知道PyPy有什么问题。我想知道其他⼈是否会得到同样的结果!
Python 3⽐Python 2快吗?
是的。在⼤多数测试中,Python3⽐Python2快。然⽽,有⼏个例外值得注意。在加密测试中,由于整型数据类型,Python 3⽐Python2慢1.35倍。在启动时间测试中,Python3⽐Python2慢1.39倍。
Python 3的缓慢启动将是CPython核⼼团队在3.8和3.9版本中解决的主要问题之⼀。
除了加密和启动时间测试,在其他测试项⽬中,Python 3⽐Python2快1.2-1.3倍。改进后的Python 3.7升级将在今年年底推出。
既然PyPy快得多,为什么每个⼈都不使⽤它呢?
PyPy有⼀个实时编译器,所以它⽐CPython快。JIT编译器有很⼤的好处,因为它们在执⾏可预测的重复任务时⾮常⾼效。Python性能测试的⼀个特点是,您需要多次运⾏相同的代码以使其准确,从⽽减少应⽤程序的错误边界。因此,PyPy在这种测试中有更好的性能。
JIT编译器最明显的缺点,尤其是PyPy的JIT编译器,是启动成本⾼。另⼀个缺点是许多C语⾔扩展缺乏兼容性。因
为“Python”(cpython,官⽅PSF Python)是⽤c语⾔编写的,所以PyPi上的许多第三⽅扩展都利⽤了这⼀点。努⽪就是⼀个很好的例⼦。努⽪的⼤部分代码都是⽤优化的C语⾔编写的。当您执⾏pip install numpy命令时,它使⽤本地c编译器为您的Python运⾏时为Python程序构建⼀个⼆进制库。
由于PyPy是⽤Python编写的,许多模块根本不能⽤PyPy⼯作,所以您需要经常检查。此外,PyPy还需要⾯对与CPython相同的挑战:从Python2转变为Python3。直到最近,我仍然发现PyPyPyPyP3不
稳定,⼀些奇怪的结果仍然出现在测试中。其他⼀些软件包遇到了问题,⽐如PyTest,所以他们放弃了对PyPyPyP3的⽀持。
结论
Python 3.7是最快的“官⽅”Python版本,PyPy是我测试过的最快的解释器。
如果PyPy 2在未来的使⽤越来越少,即使PyPy33不能⽐PyPy更快,我希望它的速度会提⾼。
更多的Python视频、源代码和材料都是免费的。
如果您有互联⽹问题,也可以咨询我,谢谢!如果你也想⼀起学习⼈⼯智能,欢迎留⾔交流。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论