JIT的主要方法是什么?

时间:2010-09-29 09:32:18

标签: c# clr jit

到目前为止,我记得第二次调用时函数是JIT'd。

Main方法怎么样?里面的代码是JIT'd吗?

如果我发现了一些代码,我应该把它包装在一个函数中吗?

3 个答案:

答案 0 :(得分:6)

所有.NET(MSIL)代码必须在执行之前进行JIT(编译为本机代码)。

你可能指的是,一旦代码被JIT化,它就会被缓存。 JIT的开销仅发生一次。如果您想在没有JIT开销的情况下执行基准测试,则必须“预热”您的基准测试,或者使用NGEN永久编译MSIL。

答案 1 :(得分:3)

回答旁边的问题:

  

如果我发现一些代码,应该   我把它包装在一个函数中?

这可能是关于测量某些代码的性能,其中通常的建议是将其放在方法中,并在启动定时循环之前至少调用一次该方法。这样就可以避免通常在第一次调用方法时产生的JIT开销。

答案 2 :(得分:1)

第一次调用方法时会触发方法。

.Net无法执行非jitted方法。

所以main被jitted。

See also this answer from Jon Skeet.