Q06·问题驱动

为什么 JIT 编译器能让解释型语言变快?

深入解答

JIT(Just-In-Time)编译器通过运行时优化提升性能。在 L7(体系结构)层面,JIT 可以生成针对当前 CPU 架构优化的机器码(如使用 AVX 指令);在 L9(编译器)层面,JIT 可以利用运行时信息进行优化(如类型特化、内联缓存、逃逸分析),这些优化在静态编译时无法完成;在 L10(程序设计)层面,动态语言的灵活性(如鸭子类型、动态分发)在解释执行时代价高昂,JIT 通过推测优化(speculative optimization)假设类型稳定,生成高效代码。代价:JIT 需要预热时间(首次执行较慢),内存占用更大(需要存储编译后的机器码)。典型实现:Java HotSpot、JavaScript V8、Python PyPy。