.net - .NET编译IL多少次

标签 .net compilation jit il

我正在读第二本书,但仍然不明显。

我的问题是: 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/

相关文章:

haskell - Haskell Miso 的编译速度更快

c++ - Visual Studio 2017 的 CMake 多项目设置

android - 如何将最新的 c++ protobuf (3.2) 与 Android NDK 集成/安装?

java - 如果java可以编译代码,为什么还要解释它?

c# - Mapnik.NET 图层数据源路径

c# - 当我打开 Release模式时,捆绑在 MVC5 中不起作用

c# - 删除文件会生成异常 "could not find a part of the path"

.net - .NET 的 BBCode 或 wiki 标记库?

android - Jit:将 JitTable 的大小从 512 调整为 1024 等等……这是什么?

c# - 是否可以使 CLR JIT 在 WP7 中使用来自 C# 的 SIMD?