一种即时编译器(JIT)可以根据预先不可用的运行时信息对程序进行优化,而静态编译器(AOT)则不能。
这种运行时信息最明显的例子是目标平台,例如:程序正在运行的确切CPU或任何加速器,例如可能可用的GPU。这就是OpenCL被JIT编译的意义所在。
但是假设我们预先知道目标平台是什么:我们知道哪些SIMD扩展将可用等。那么,JIT编译器可以利用哪些其他运行时信息,这些信息对于AOT编译器不可用呢?
类似HotSpot的JIT编译器将自动优化程序的热点... 但是一个AOT编译器不仅可以优化整个程序,还可以优化所有热点,是吗?
我想要一些具体示例,说明JIT编译器可以执行的特定优化,而AOT编译器无法执行。如果您能提供任何关于这种优化在“现实世界”情况下有效性的证据,那么会有额外加分。
这种运行时信息最明显的例子是目标平台,例如:程序正在运行的确切CPU或任何加速器,例如可能可用的GPU。这就是OpenCL被JIT编译的意义所在。
但是假设我们预先知道目标平台是什么:我们知道哪些SIMD扩展将可用等。那么,JIT编译器可以利用哪些其他运行时信息,这些信息对于AOT编译器不可用呢?
类似HotSpot的JIT编译器将自动优化程序的热点... 但是一个AOT编译器不仅可以优化整个程序,还可以优化所有热点,是吗?
我想要一些具体示例,说明JIT编译器可以执行的特定优化,而AOT编译器无法执行。如果您能提供任何关于这种优化在“现实世界”情况下有效性的证据,那么会有额外加分。