据可靠消息,CPython 的下一个版本将会包含 JIT(Just In Time,即时编译器)。
根据一些用户进行的早期测试,它将带来一些直接的运行速度改进,以及未来仍有重大优化的良好前景。新的 JIT 编译器将包含在Python 3.13 中,是可选的,开发者需要使用 -enable-experimental-jit 配置 CPython 构建。
内核 Python 开发人员 Brandt Bucher 于上个月底提交了带有初始代码的拉取请求。3.13版本计划于2024年10月发布。
JIT 编译器已被其他高级语言(例如 Java、PHP 和 C#)使用,通过在运行时将解释代码编译为本机机器代码,以便提升巨大速度改进,不再需要开发人员执行任何额外的步骤。
JIT 编译器的目标包括广泛的操作系统支持、实现的低复杂性与简单部署,不会为安装 Python 的最终用户添加依赖项。
Bucher 在 CPython 核心开发者冲刺 (CPython Core Developer Sprint) 的演讲中所述,这是通过一种称为“复制和补丁编译”的技术来实现的,该技术由斯坦福大学的研究人员 2021 年提出,研究人员Haoran Xu 和 Fredrik Kjolstad 表示,这个想法是将“来自大型二进制实现变体库的代码拼接在一起”。我们将这些二进制实现称为模板,因为它们存在漏洞,必须在代码生成过程中插入缺失值。”
与其他 JIT 编译器技术相比,复制和修补方法对于 CPython 来说更容易实现,但仍然生成高质量的代码。
JIT技术基于LLVM生态,编译器用 clang,编译参数开 -o3 获取最大的性能。但仅在构建 CPython 运行时时存在,而不是在部署时存在。支持的操作系统包括 Windows、适用于 x86 和 ARM64 的 macOS,以及适用于 x86 和 ARM64 的 Linux。
使用新的 JIT 编译器的 CPython 快了多少?
Bucher 在GitHub 评论中说:
“就目前情况而言,它比二级解释器快 2% 到 9%,具体取决于平台(各个基准差异很大,从慢 13% 到快 47%),”
简单的总结是,我们不应该期望特别显著的速度提升,尽管其与其它加速 Python 的产品一起努力,这是一个值得赞赏的增量提升。
下一步迁移到 JIT 编译器会在以后的版本中实现更好的性能。Bucher 在描述了一些未来可能的优化,这些优化将改进生成的代码,例如“使用 ghccc 调用约定来实现更高效的尾部调用(在指令的开头和结尾减少推送、弹出和寄存器混洗)。每一点都增加了一点点复杂性,并且可能应该成为单独审查的项目。不过,我已经粗略地制作了其中许多原型,证明它们是可行的。”
根据 Bucher 的说法,该工作是在 CPython 3.11(添加了专门的自适应解释器)和3.12(使用领域特定语言来生成解释器,允许在构建时进行修改和分析)的基础上推进的。
此项工作被视为加速 Python 长期努力的一部分。
作者:洛逸
来源:21CTO综合
本文为 @ 万能的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。