Python技术迷

Python JIT新版编译器真是香~

转自:大侠学python

啥是JIT?

Python 3.13 引入 copy-and-patch JIT(Just-In-Time) 编译器,JIT是 Python 发展史上的一个重大改变,旨在提高 Python 代码的执行速度。

Image

JIT 编译器的引入是 Python 性能优化的一大步,尤其是对于那些需要高性能计算的应用场景。

绝大多数的Java都以JIT方式提高其性能。

啥是Copy-and-patch

JIT 编译器在Python代码第一次运行时,将代码编译成机器语言,并在后续运行时重用这些编译后的代码。

这意味着随着程序的运行,性能会逐渐提高,因为更多的代码被编译成机器语言。这与传统的解释器相比,每次执行代码时都需要解释执行,JIT 编译器只在第一次执行时花费编译时间。

而新的JIT编译器采用了Copy-and-patch的设计,其工作原理是将字节码编译成一组 “模板” ,然后在运行时使用正确的值进行拼接和修补。

copy-and-patch JIT 编译器尽可能使用 LLVM 生态的工具,比如编译器采用 Clang,编译参数设为 -o3 以获取最大的性能,二进制工具用 llvm-objdump 和 llvm-readelf。

Copy-and-Patch 技术的优点是开发者无需手写汇编代码就可以生成高效的机器码,同时在运行期产生汇编代码的方式是快速的。

这意味着普通Python用户不需要在他们的Python运行时中运行复杂的JIT编译器架构。

最后

此处埋个坑,等Python3.13正式版发布,我会做一个新旧编译器效率对比的测试。

Image