.NET编译IL的次数是多少次

use*_*039 3 .net il jit compilation

我正在读第二本书但它仍然不明显.

我的问题是:编译IL语言的次数:a)每次从开始运行应用程序的执行.b)一次,在第一次执行后.

Phi*_*eck 5

这是a) - 每次执行程序.当执行程序集的位时,JITter会将它们编译并缓存在内存中.所以每个位在运行之前只编译一次,然后每次都在本机运行.但是,这些编译的位仅存储在存储器中,并在程序终止后被丢弃.

如果你愿意,你可以ngen用来创建和缓存已编译的图像,在这种情况下答案变为C) - 一次,在执行之前.

一个重要的特殊情况澄清(来自svick).请注意,在Windows 8,面向.NET 4.5或更高版本,装配或者是安装到GAC或来自Windows应用商店是一个候选自动本地图像生成.这些本机映像由计划的NGen任务根据使用情况创建.