对 CPython 的 JIT 编译器两年的思考:好的、坏的、丑的

主要观点:作者分享了对 CPython JIT 的看法,包括做得好的方面和可改进之处,以及社区建设情况等。
关键信息

  • 作者负责 CPython JIT 编译器的优化器,JIT 仍为实验性,可能很快过时。
  • 做得好的方面:开始围绕 JIT 建立社区,JIT 具有可教性,有新人加入贡献。
  • 可改进之处:性能方面,3.13 的 JIT 比解释器慢或相当,3.14 的 JIT 在某些情况下有速度提升但总体仍不理想,覆盖范围不准确,最初媒体报道有误。
  • 社区建设:有 Savannah、Tomáš、Diego 等贡献者,积极吸引人们参与,使 JIT 更易工作。
    重要细节
  • 开始时 JIT 主要由 Brandt 负责机器码生成器,后作者得到 Mark 和 Guido 帮助,之后作者因学业繁忙,Brandt 成为优化器的唯一贡献者。
  • 3.14 的 JIT 在不同编译器下表现不同,用现代编译器如 Clang 20 时 JIT 通常比解释器慢,用旧编译器如 GCC 11 时 JIT 能接近或超过解释器。
  • 部分基准测试中 JIT 有显著速度提升(约 20%),也有一些慢降(约 10%),如 richards 快约 20%,nbody 慢约 10%,spectralnorm 慢一些。
  • 最初媒体报道 3.13 JIT 比解释器快 2 - 9%有误,实际情况更复杂,有时 JIT 比解释器慢很多,且是与解释器比较而非 tier 2 解释器。
  • 作者更正之前关于 3.14 JIT 无主要性能添加的说法,是仅指优化器,机器码生成器有改进,且自己因时间原因错过某些计划的功能。
阅读 10
0 条评论