Python 3.11 的速度或将提高两倍

Python 3.11 将于 2022 年 10 月发布,Python 的作者 Guido Van Rossum(龟叔) 计划将 Python 的速度提高两倍,他未来四年的总体目标是将 Python 的速度提高五倍。

虽然 Python 是使用最广泛的计算机语言之一,但它更常用于数据分析等特定活动,而不是实际的交易软件。这是由于 Python 的抽象水平更高,这使得它作为解释语言的速度比 C++ 或 Java 等编译型语言慢。

想改变这一点。Van Rossum 在上一次 Python 语言峰会上表示,当 3.11 版本于 2022 年 10 月发布时,他计划将 Python 的速度提高两倍。

Van Rossum 的演示文稿[1]可在 Github 上找到,详细介绍了他计划如何做到这一点,为了方便你了解这一计划,我把文稿内容翻译如下:

香农计划

  • 参与该计划 - github.com/markshannon/faster-cpython[2]

  • 基于 “HotPy、HotPy2” 的经验

  • 未来四年将 Python 的速度提升 5 倍,每年 1.5 倍

  • 寻找基金会

感谢 Python

  • 当我(Guido Van Rossum,下同)退休在家时我感到无聊

  • 我向微软申请了职位,被雇用了

  • 微软给了我充分的自由来发起项目

  • 我选择回归本源

  • 这就是微软回馈 Python 的方式

开放讨论、开源

  • 已经组建了小团队(Eric Snow, Mark Shannon, Guido, 可能会扩大)

  • 与核心开发人员完全开放的协作

  • 保持 CPython 的增量更改

    • 没有长期存在的分叉/分支,6,000 行 PR 不足为奇

    • 我们也会负责维护和支持

  • 一切都是开源的

    • 开放所有具体项目的仓库

    • 开放 GitHub 仓库上的所有讨论

限制

  • 不破坏稳定的 ABI(应用程序二进制接口) 兼容性

  • 不破坏有限的 API 兼容性

  • 不打破或降低极端情况的运行速度

    • 例如,在堆栈上 push 1,000,000 个元素

  • 保持代码可维护

  • 这很难!

我们能做什么,不能做什么

  • 不更改基础对象,类型布局

    • 例如,必须保持引用计数语义

  • 可以改变字节码、栈帧布局

  • 可以改变编译器、解释器

  • 可以改变大多数对象的内部实现

    • 并非所有对象的布局都是公开的

3.11 如何提升 2 倍

  • 自适应的、专门的字节码解释器

    • 与内联缓存类似,但更全面

  • 各种其他单独的优化

    • 例如,优化帧堆栈,更快的调用,调整分配

    • “零开销”的异常处理

  • 我们还不确定我们一定会达到 2 倍!

    • 但保持乐观和好奇

其他我们可以做的

  • 提示启动时间

  • 更改 pyc 文件格式

  • 更快的整数

  • 将 __dict__ 置于固定偏移量 (-1?)

  • "隐藏的类"

  • 标记号码(但... ABI 问题)

3.11 后的计划

  • 取决于我们管理 3.11 的内容

  • 5 倍加速,我们必须要有创意

  • 我们的未来会有机器码生成

  • 可能发展稳定的ABI/有限的API

谁受益比较大

  • 运行 CPU 密集型纯 Python 代码的用户

  • 使用 Python 构建网站的用户

  • 碰巧使用 Python 工具的用户

谁受益不大

  • 已经用 C 语言编写的代码

  • numpy、tenserflow 等

  • I/O 密集型任务

  • 多线程代码

  • 算法效率低下的代码

我们的东西在哪

  • PEP 659:专业自适应的编译器

  • repos:

    • 分析、基准测试等工具

    • 讨论跟踪

    • cpython 的 fork,用于暂存分支

    • github.com/faster-cpython/cpython

    • github.com/faster-cpython/ideas

    • github.com/faster-cpython/tools

最后

总结一下,也就是自适应字节码解释器、帧堆栈优化、“零开销”异常处理,这些可能会让 Python 的速度翻一番,未来的更改可能包括坚实的 ABI(应用程序二进制接口)或机器代码生成,以进一步提高 Python 的性能。

相信龟叔,让我们拭目期待吧。

6a4fc263ae36f567a085760a40d7bd3e.png

参考资料

[1]

文稿: https://github.com/faster-cpython/ideas/blob/main/FasterCPythonDark.pdf

[2]

github.com/markshannon/faster-cpython: https://github.com/markshannon/faster-cpython

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值