JIT 编译 (JIT compilation),运行时需要代码时,将 Microsoft
中间语言 (MSIL) 转换为
机器码的编译。
interpretation:解释就是把
源程序以句为单位,每句每句的解释并执行,如果语句出现在循环体当中,比如循环10次,该语句就要被
解释执行10次.不产生
目标代码.
compilation:编译是把源代码一次性翻译成
目标代码,目标代码可能是可直接运行的
机器语言,或是已存在相应翻译器的不可执行语言.
just-in-time compilation的意思是说,首先仍然是compilation,有caching,不用象解释那样把循环体里面出现的代码重复解释;同时有目标机器代码.这是相对于interpretation的好处.另外相对于static compilation的好处是,在编译过程对代码进行优化.选择性的编译某个函数或任意某段代码.
JIT具体的做法是这样的:当载入一个类型时,CLR为该类型创建一个内部数据结构和相应的函数,当函数第一被调用时,JIT将该函数编译成
机器语言.当再次遇到该函数时则直接从cache中执行已编译好的机器语言.