据我了解,JIT(即时编译)是指运行时进程,其中字节码被编译(转换)为本机代码,以提高运行时性能。 / p>
另一方面,编译时评估是通用编程或运行时优化的常见做法。同样,据我所知,在这种情况下,编译器解释源代码以评估表达式(例如产生值或类型)。在这种情况下,编译时间通常会显着增加。
是否存在编译时JIT 进程,其中编译器将源代码转换为本机以进行更有效的编译时评估?我发现这很自然,但是任何编译器都能用任何语言做到这一点吗?
如果我在自己的编译器中这样做,那会是个好主意吗?与运行时JIT相比,我会遇到哪些额外的困难?
答案 0 :(得分:0)
不会有任何意义。编译器已经在编译代码。常量表达式评估仅发生一次。例如,Java HotSpot JVM发现在将代码执行数千次之后将其编译为本机代码是有益的。
答案 1 :(得分:0)
我认为你所谈论的是 - 当默认行为是解释或即时代码生成时,提前执行代码生成 - 被称为 ahead-of-time (AOT) compilation
优点:
缺点:
你可以想象在AOT编译的代码上进行配置文件导向的整个程序优化,但是你最终会得到一些类似于HotSpot运行时的“预热”版本的东西,用足够热量的方法回购共享内存。重新翻译它们。