Python 之父汇报进展:CPython 3.11 比 3.10 快 25%


在退休又复出加入微软的 Faster CPython 团队后, Python 之父 Guido van Rossum 在 2021 年 Python 语言峰会上放下狠话,称团队将在 Python 3.11 版本中实现至少提速 1 倍的进展。

而在今年的 Python 语言峰会上,Guido 和团队搭档 Mark Shannon 汇报了最新的进展:对比 3.10 版本,CPython 3.11 的提速在 10 - 60%之间,具体速度取决于代码规模和工作领域等条件。 当使用 pyperformance 基准套件测量在 Ubuntu Linux 上使用 GCC 编译时, CPython 3.11 平均比 CPython 3.10 快 25% 。

CPython 3.11 的性能改进主要集中在更快的启动和更快的运行时,这些优化大部分来自于 PEP 659  :自适应解释器,它运作思路跟 JIT 有点相似,都是识别热点代码,但自适应解释器的工作范围无法脱离字节码。目前 PEP 659 提案的工作基本完成,但 for 循环和二进制操作的动态优化仍有待完成。

在提速 25% 的同时,Python 3.11 仍有一些需要改善的地方,比如 Python 在 3.11 中的内存消耗与 3.10 中的基本相同。此外还需关注 C 扩展的问题:CPython 与 C 的简单接口是主要优势,而与 C 扩展的不兼容性则是一大槽点。而 Faster CPython 团队在 CPython 3.11 中所做的优化工作在很大程度上忽略了扩展模块的问题,对此,团队领导者 Shannon 表示,团队正在开辟将低级函数 API 暴露给虚拟机的可能性,以尽可能地减少 Python 代码和 C 代码。

至于饱受期待的 JIT 编译器,Shannon 表示实现 JIT 的第一步是实现一个跟踪解释器,但目前还有太多需要关注的项目,引入 JIT 编译器的工作还有一段路要走,“最早可能要到 3.13 才能到达”。(顺便说一下,Shannon 一直对 CPython 是否真的需要引入 JIT 持怀疑态度。)

有意思的是,昨天我们报道了开发者 Sam Gross 的新提案:完全移除 CPython 解释器的 GIL- 全局解释器锁 。这个提案和 Faster CPython 团队的工作将以截然不同的方式加速多线程 Python 代码,但两者又可能产生一些冲突,毕竟 Faster CPython 已实施的优化,很大一部分都基于 GIL 仍存在的前提。

以下是本文的参考资料相关链接,感兴趣的朋友可以前往了解 CPython 3.11 的优化细节,以及 Faster CPython 团队的具体工作:

  • Python 基金会博客:Faster CPython 团队提供的性能改进
  • Faster CPython 对 CPython 3.11 的优化细节
  • CPython 3.11 标准基准测试 (对比 3.10 )
  • Mark Shannon 的 Faster CPython 计划:加速 CPython 的实施方案 
  • PEP 659 – Specializing Adaptive Interpreter

相關推薦

2022-08-10

>...)),以及占有型量词 (*+, ++, ?+, {m,n}+)  Faster Cpython Project 已经出现了一些令人振奋的结果:Python 3.11 比 Python 3.10 快 10%~60% Python 3.11 的下一个预览版本将是 3.11.0rc2,目前计划于 2022 年 9 月 5 日发布。正式版则计

2023-04-04

js 的 Python 发行版。Pyodide 由编译成 WebAssembly/Emscripten 的 CPython 解释器组成,允许 Python 在网页浏览器中运行。 Pyodide 可以安装来自 PyPi 的任何 Python 包。Pyodide 还包括一个外部函数接口,可以将 Python 包暴露给 JavaScript,并将浏

2022-07-13

>...)),以及占有型量词 (*+, ++, ?+, {m,n}+)  Faster Cpython Project 已经出现了一些令人振奋的结果:Python 3.11 比 Python 3.10 快 10%~60% Python 3.11 的下一个预览版本将是 3.11.0b5,目前计划于 2022 年 7 月 25 日发布。正式版则计

2022-09-14

>...)),以及占有型量词 (*+, ++, ?+, {m,n}+)  Faster Cpython Project 已经出现了一些令人振奋的结果:Python 3.11 比 Python 3.10 快 10%~60% 更多详情可查看官方公告。

2022-07-28

>...)),以及占有型量词 (*+, ++, ?+, {m,n}+)  Faster Cpython Project 已经出现了一些令人振奋的结果:Python 3.11 比 Python 3.10 快 10%~60% Python 3.11 的下一个预览版本将是 3.11.0rc1,目前计划于 2022 年 8 月 1 日发布。正式版则计

2022-06-02

g):((?>...)),以及占有型量词 (*+, ++, ?+, {m,n}+)  Faster Cpython Project 已经出现了一些令人振奋的结果:Python 3.11 比 Python 3.10 快 10%~60% Python 3.11 的下一个预发布版本将是 3.11.0b3,目前计划于 2022 年 6 月 16 日星期四发布。

2022-05-09

或可能缺失 bpo-46752 – 将任务组引入 asyncio Faster Cpython Project 已经出现了一些令人振奋的结果:Python 3.11 比 Python 3.10 快 10%~60% Python 3.11 的下一个预发布版本将是 3.11.0b2,目前计划于 2022 年 5 月 30 日星期一发布。

2022-10-29

elping Make Python Faster”的博客,详细介绍了该公司的 Faster CPython 团队。 文章开头指出,近几年来 Python 的地位不断提高,包括 TIOBE 和 IEEE 都把该语言排在了榜单首位。然而,Python 的多功能性往往伴随着对其性能的批评。一些对

2023-07-08

次发布的新产品并没有采用 PHP 作为后端开发语言。根据 CPython 核心开发者 Łukasz Langa 透露的消息,Threads 后端采用 Python 3.10 进行构建——Meta 基于 CPython 3.10 构建了内部自用的高性能分支 Cinder。 据介绍,Cinder 针对性能进

2023-07-11

性能。PEP 703 指的是 Making the Global Interpreter Lock Optional in CPython,让全局解释器锁在 CPython 中成为可选。 该提案建议向 CPython 添加构建配置 (--disable-gil),使其在没有全局解释器锁的情况下运行 Python 代码,并进行必要的更改以

2023-08-28

。 Mojo 是 Modular AI 公司开发的新编程语言,它结合了 Python 的易用性以及 C 语言的可移植性和性能,目标是使其成为 AI 研究和生产的理想选择。另外,Mojo 能够利用 MLIR,使 Mojo 开发者能够利用向量、线程和 AI 硬件单元。根据

2023-04-12

CPython 核心开发者 Nathaniel J. Smith 提交了一项新提案: PEP 711 —— PyBI: a standard format for distributing Python Binaries 根据该提案的描述,PyBI (Python Binary) 是用于分发 Python 二进制文件的标准格式。Nathaniel 对 PyBI 的概括如下

2022-09-29

Pyston 2.3.5 已发布。此版本显著提升了性能,优化与上游 CPython 的兼容性。 Pyston 最初是由 Dropbox 开发的开源 Python 实现,并与 Python 高度兼容。Dropbox 几年前就已停止支持开发 Pyston,不过其开发团队一直在进行维护,并于去年加

2023-10-21

Mojo🔥 是 Modular AI 公司开发的新编程语言,它结合了 Python 的易用性以及 C 语言的可移植性和性能,目标是使其成为 AI 研究和生产的理想选择。 下载地址:https://developer.modular.com/download 开发者需要先注册 Modular 账号