1.7 即时编译

在前文中,我们从各个角度学习了.NET,包括.NET的历史、体系结构和运行机制等,不一而足,接下来将探讨JIT机制。这里我们以C#代码的编译为例,先简单介绍下C#,C#被设计为一种简单的、现代的、通用的以及面向对象的编程语言,它运行于公共语言运行时之上,也就是说C#无法离开公共语言运行时而单独运行。

C#在.NET框架上从编译到运行的过程如下:

(1)在编译期,CLR对C#代码进行第一次编译,生成中间代码的DLL或者EXE。

(2)在运行期,CLR将针对特定的硬件环境使用JIT(即时编译引擎),将中间代码编译为二进制代码并执行。

(3)编译好的二进制代码被放到一个缓冲区缓存,下次再调用相同的代码就直接从缓冲区调用,也就是说相同代码的编译只会执行一次。

图1-12演示了上述过程。

1.7 即时编译 - 图1

图 1-12 C#的编译和执行