6

我试图了解如何配置我想要使用的 JIT 类型。

比如说,我知道 JIT 有 3 种类型(Pre、Econo 和 Normal)。但是有以下奇怪的问题。

  1. .NET 在部署服务器中运行的默认 JIT 是什么?

  2. 如果默认是正常的,我们是否可以灵活地更改设置以使用 pre 或 econo。如果是这样我可以在哪里改变这个?

不确定,如果此设置在 machine.config 或其他内容中?

4

2 回答 2

9

我以前从未听说过“Econo jit”。我确实看到了 google 链接,它们都指向谈论 .NET 1.x 的旧文章。“经济”部分似乎是通过不尽可能优化生成的机器代码和跳过 IL 验证来实现的。

自 .NET 2.0 以来,此选项肯定不再存在。只有一种抖动,IL 总是经过验证,但可以关闭优化。就像在程序的调试版本中一样,[Debuggable] 属性控制它。有不同种类的抖动,Microsoft 提供的抖动可以针对 x86、x64 或 ARM 处理器。但这是一个逻辑上的区别,不同的处理器需要不同的机器代码。抖动选择是自动的。关闭优化几乎没有意义。

“Pre jit”仍然存在,您使用 ngen.exe 预编译您的程序集。它使用与在运行时生成代码的抖动完全相同的抖动。它改善了程序的热启动时间,但它并不总是最好的解决方案,因为生成的代码效率不高,并且会减慢冷启动速度。使用 ngen.exe 需要编写一个安装程序,在安装时在用户机器上运行它。

于 2012-07-09T13:54:06.510 回答
0

您的意思是像这样更改 JIT 编译器的编译器选项吗?

有什么方法可以更改 .NET JIT 编译器以提高性能而不是编译时间?

还是您的意思是使用与.net 附带的完全不同的编译器?我不知道这是可能的。例如,如果您在 .net 旁边安装了单声道,则需要使用单声道显式启动,这不是正在运行的 .net 程序集可以决定的事情。

于 2012-07-09T11:47:03.750 回答