Python3.11 速度提高2倍至5倍

 

本周于PyCon 2021举行Python语言峰会上,Python语言创建者Guido van Rossum公布了近期和长期计划,旨在使Python更快-快两倍到五倍,甚至更多。

从替代运行时(例如PyPy)到包装用C / C ++编写的模块,Python语言已经有许多运行速度更快的方法。但是这些方法中几乎没有一个涉及加速CPython本身的问题-C语言编写的Python的参考实现,这是该语言最广泛使用的版本。

[同样在InfoWorld上:6个提高Python性能的项目]

短期计划是在Python 3.11上至少增加一组主要的性能改进,现已正式作为Alpha级项目进行开发。Python 3.11计划于2022年发布。

语言峰会上演讲中,范·罗瑟姆(van Rossum)描述了当前加速Python的计划如何在某些严格的约束下运行。对CPython所做的任何更改都不得破坏运行时的ABI(应用程序二进制接口),以便用C编写的Python扩展将继续按原样工作。根据CPython维护可维护性和简单易懂的代码库的总体目标,这些更改必须是增量的和可管理的。并且所有修改都必须是开源的;CPython不能有任何专有的“黑匣子”扩展。 

在这些限制条件下,van Rossum和他的团队确定了可以自由更改的Python的一些部分。Python的字节码系统,编译器和解释器都已被选作目标,因为它们倾向于在版本之间进行更改。字节码尤其不能保证与主要版本之间的兼容性,因此如果需要,可以对其进行重大更改。

针对PPE 659概述的针对Python 3.11的第一个建议包括“自适应的专用字节码解释器” 可以将在代码的特定部分中引用特定数据类型的字节码指令内联为该特定数据类型的该字节码的“专用”版本,以内联替换,从而提高了速度。开发人员估计,在最佳情况下,性能可能会提高约50%。

有关提高速度的其他建议包括优化框架堆栈,更改函数调用方式,实现更有效的异常处理,添加优化以加快启动时间以及修改.pyc字节码缓存文件格式。

所有这些更改都缺少对Python提出的最普遍建议的改进之一:运行时生成机器代码或即时编译(“ JITing”)。范·罗瑟姆(van Rossum)在讲话中建议在Python 3.11之后考虑此类计划,因为首先获得具有针对性的更改可能带来的性能改进是有意义的。

该项目正在完成的所有工作都已在GitHub上的fast-cypthon存储库中提供,代码(CPython 3.11的一个分支)和思想都得到了跟踪。

 

 
posted @ 2021-05-16 12:37  DaisyLinux  阅读(4109)  评论(0编辑  收藏  举报