本文内容可能会改动,以实际版本为准!
本文是FasterCPython计划在3.12中实现的主要内容的概要。
跟踪优化器
Python3.11提升速度的主要方法是用更快地与上下文相关的操作码(自适应的专门化操作码)替换个别的操作码,下一个大的改进方法是优化多个操作码的运行。
为此,现有的许多高级操作码将被替换成低级操作码,例如,用于检查版本号和引用计数的操作码。这些更简单的操作码更容易进行优化,例如,可以删除冗余的引用计数操作。
这些更底层的操作码还能让我们得到一组适合用于生成机器代码的指令(在CPython和第三方JIT项目中都适用)。为了做到这点,解释器循环(interpreterloop)将基于声明性的描述而生成。
这可减少一部分为了保持解释器循环与某些相关函数同步而产生的bug(mark_stacks、stack_effect等函数),同时也让我们可以对解释器循环作较大的更改试验。
多线程并行
Python当前每个进程有一个全局解释器锁(GIL),阻碍了多线程的并行。
减少内存管理的开销
我们不仅会减小对象的大小,还会使它们的layout更加规则。
这不仅能优化内存的分配及释放,还能在GC和重新分配期间加快遍历对象的速度。
API稳定性:
除了前述项目外,开发团队还将提升CPython代码库的整体质量:
通过减少不同编译阶段的耦合,使编译器更易于维护与测试。
积极地在C语言级别监控和改进CPython测试套的代码覆盖率。
改进Python性能基准测试套,加入更具代表性的现实世界的负载测试。
协助处理CPython问题和PR,特别是与性能有关的问题。
增加用于标准基准测试的机器,增加macOS和Windows的测试结果。
继续跟主要的深度使用Python内核的项目合作,帮助它们适配CPython解释器的更改。