社区编辑申请
注册/登录
翻身了?Python3.11性能快了近64%!!
开发 后端
5月7日,Python团队发布最新的 Python 版本 - Python 3.11。目前发布的是一个测试版本 (Beta1) ,供开发者们测试或实验时使用。

Python 这门编程语言的运行速度并不快,这早已不是什么秘密了。很多开发者期待这门语言的性能有所提升,这种情况或即将发生改变,或至少朝着正确的方向前进着,这也是Python的创始人重新出山后的决策结果之一。

5月7日,Python团队发布最新的 Python 版本 - Python 3.11。目前发布的是一个测试版本 (Beta1) ,供开发者们测试或实验时使用。

按照开发团队的所定下规约,预计将于 2022 年 10 月正式版本将释出。

有好奇网友在自己的虚拟机上进行了测试,他在单独的 Docker 容器分别安装了 Python 3.10 和 3.11,并查看它们在一组基准测试中的比较。

在其中使用了pyperformance 包来完成这项工作,这个包会帮助开发者完成繁重的基准测试工作。

总结的数据,按平均数值来计算,Python 3.11 比 Python 3.10 快了 14%。3.11 新版本在某些基准测试上稍微慢了一点,但在大多数基准上,速度提高了 64%。

以下是在有着 10 核 CPU 的 M1 Pro MacBook Pro 16 上运行的基准测试。每个 Python 版本都安装在 Docker 中,它使用 5 个逻辑 CPU 内核。

以下是不同包的运行数据:

目前Python 3.11 的正式版还未正式发布,需要等待一个完全稳定的版本,目前测试的仅是一个候选版本,也许正式版本发布后两者之间的差距会更大。

相关报道:提速25%!CPython 3.11 来了

文 | 罗奇奇,出品 | OSC开源社区(ID:oschina2013)

在退休又复出加入微软的 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 仍存在的前提。

注:在去年的核心开发者 sprint 会议上,核心开发者们跟 Sam Gross 对 nogil 项目做了一次深入研讨,回答了大家较为关注的诸多问题。具体的会议纪要,可查看这篇文章——Python 官方研讨会:彻底移除 GIL 真的可行么?

责任编辑:庞桂玉 来源: Python爱好者社区
相关推荐

2022-07-20 09:05:06

Python编程语言

2022-05-04 12:44:57

2022-05-16 07:48:54

2022-01-27 08:58:13

2017-08-08 09:45:43

Python性能优化

2021-11-19 16:54:11

2016-06-14 14:50:17

Python性能

2010-03-10 18:42:30

Python性能

2022-01-13 11:50:57

2020-02-06 11:15:58

Python命令代码

2020-08-30 14:31:40

Python编程语言开发

2021-03-19 10:32:39

Python网站Python开源库

2020-09-11 08:48:52

Python 3开发代码

2021-11-01 12:10:56

2015-04-23 10:51:13

iOSpython

2015-04-23 09:29:05

iOSpython

2020-01-09 12:11:02

Python 开发编程语言

2020-01-13 12:27:58

Python编程语言开发

2018-10-28 15:40:23

Python编程语言

2020-09-18 06:48:21

Python编程语言

同话题下的热门内容

该不该将单体架构迁移到微服务?如何创建一个无代码的自助客户聊天机器人功能测试vs.非功能测试:能否非此即彼地进行选择?JMS VS Kafka:苹果与橘子之战!「芯片法案」下周签署!台积电沉默以对佩洛西,三星、SK海力士谨慎观望Java 服务 Docker 容器化优秀实践说实话,今年互联网人跳槽的逻辑变了八个流行的 Python 可视化工具包,你喜欢哪个?

编辑推荐

2017年9月编程语言排行榜:Java、C与C++三巨头还能统治排行榜多久?2017年最受欢迎的5个前端框架比较2017年11月编程语言排行榜:脚本语言怎么了?2017年3月编程语言排行榜:Swift首次进入前十最近租房有点烦!技术人如何用Python找到称心如意的“小窝”?
我收藏的内容
点赞
收藏

51CTO技术栈公众号