为什么c#和Java编译JustInTime而不是在第一次运行/安装时编译所有内容?

本文关键字:编译 安装 运行 Java JustInTime 为什么 第一次 | 更新日期: 2023-09-27 18:08:24

似乎可以在某些应用程序安装期间将字节码编译为本机,而不会丢失跨平台问题。

安装并不一定意味着GUI安装。这可以是可执行文件第一次运行时发生的静默过程。(有或没有图形化流程条)

(我认为)这对语言的开发人员来说会容易得多,并导致更快的可执行性,而不会失去对当前机器的适应性。

为什么c#和Java编译JustInTime而不是在第一次运行/安装时编译所有内容?

类似的在幕后发生了(至少在。net中)。NGen 可以将本机图像缓存到本机图像缓存中,这样您的代码就不必在该机器上进行第二次编译。

Ngen.exe创建本机映像,这些映像是包含编译的特定于处理器的机器码的文件,并将它们安装到本地计算机上的本机映像缓存中。运行时可以使用缓存中的本机映像,而不是使用即时(JIT)编译器来编译原始程序集。

JIT编译使代码在运行时比使用解释器快得多,但初始成本可能高得令人望而却步,这取决于要做什么。