JIT即时编译器
一、什么是JIT?
即时编译器,负责将IL转换成本机CPU指令
二、JIT编译原理
①在Main方法执行之前,CLR会检测出Main的代码引用的所有类型。会导致CLR分配一个内部结构。在这个结构中,Console类型定义的每个方法都有一个对应的记录项
②Main方法首次调用WriteLine时,JITComplier函数会被调用。JITComplier函数负责将方法的IL代码编译成CPU指令
③修改最初对JITComplier的引用,使其指向内存块(包含了刚才编译好的本机CPU指令)的地址
④当Main要第二次调用WriteLine时,会直接执行内存块的代码,完全跳过JITComplier函数
第一次调用Console.WriteLine
第二次调用Console.WriteLine
方法仅在首次调用时才会有一些性能的损失。以后对该方法的所有调用都以本机代码的形式全速运行,无需重新验证IL并把它编译成本机代码
JIT编译器将本机CUP指令存储到动态内存中,这意味着一旦应用程序终止,编译好的代码会被丢弃
CLR的JIT编译器会对本机代码进行优化
学习永不止境,技术成就梦想。