.NET中什么是即时(JIT)编译器

即时编译器(JIT)是通用语言运行时(CLR)in。净负责管理执行。净程序, 无论任何。净编程语言。特定于语言的编译器将源代码转换为中间语言。然后, 该中间语言由即时(JIT)编译器转换为机器代码。该机器代码特定于运行JIT编译器的计算机环境。
【.NET中什么是即时(JIT)编译器】JIT编译器的工作:需要JIT编译器来加快代码执行速度并提供对多个平台的支持。其工作方式如下:

.NET中什么是即时(JIT)编译器

文章图片
JIT编译器将Microsoft中间语言(MSIL)或通用中间语言(CIL)转换为机器代码。这是在执行MSIL或CIL之前完成的。 MSIL在需求的基础上转换为机器代码, 即JIT编译器根据需要而不是整个MSIL或CIL进行编译。存储已编译的MSIL或CIL, 以便在需要时可用于后续调用。
即时编译器的类型:有3JIT编译器的类型如下:
JIT之前的编译器:
使用Pre-JIT编译器可以在单个编译周期中将所有源代码同时编译为机器代码。此编译过程在应用程序部署时执行。而且此编译器始终在Ngen.exe(本机图像生成器)
.NET中什么是即时(JIT)编译器

文章图片
普通的JIT编译器:
在正常JIT编译器首次调用运行时所需的源代码方法时, 会将它们编译为机器代码。之后, 它们将存储在缓存中, 并在再次调用时使用。
.NET中什么是即时(JIT)编译器

文章图片
Econo JIT编译器:
Econo JIT编译器将运行时所需的源代码方法编译为机器代码。在不再需要这些方法之后, 将其删除。
.NET中什么是即时(JIT)编译器

文章图片
JIT编译器的优点:
  • JIT编译器需要较少的内存使用量, 因为JIT编译器仅将运行时所需的方法编译为机器代码。
  • 通过使用JIT编译器可以减少页面错误, 因为在一起所需的方法很可能在同一内存页面中。
  • JIT编译器可以在代码运行时执行基于统计分析的代码优化。
JIT编译器的缺点:
  • 在最初执行应用程序时, JIT编译器需要更多的启动时间。
  • JIT编译器大量使用高速缓存存储器来存储运行时所需的源代码方法。
注意:JIT编译器的许多缺点可以使用Ahead-of-time(AOT)编译来解决。这涉及将MSIL编译为机器代码, 因此不需要运行时编译, 并且可以本地执行机器代码文件。

    推荐阅读