我正在读第二本书,但仍然不明显。
我的问题是: IL语言被编译了多少次: a) 从应用程序执行开始时的每次。 b) 第一次执行后一次。
最佳答案
这是a) - 每次程序执行时。当执行程序集的位时,JITter 会编译它们并将其缓存在内存中。因此,每个位在运行之前仅编译一次,然后每次都以 native 方式运行。但是,这些编译后的位仅存储在内存中,并在程序终止后被丢弃。
如果你愿意,你可以使用ngen
来创建和缓存编译后的图像,在这种情况下答案变成C) - 一次,在执行之前。
重要的特殊情况澄清(来自svick)。请注意,在 Windows 8 上,面向 .Net 4.5 或更高版本的程序集并且安装到 GAC 中或来自 Windows 应用商店是 automatic native image generation 的候选者。 。这些 native 镜像是由计划的 NGen 任务根据使用情况创建的。
关于.net - .NET编译IL多少次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23831812/