如何更改我想要使用的JIT类型

时间:2012-07-09 11:42:24

标签: c# .net jit

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

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

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

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

  3. 不确定,此设置是否在machine.config中?

2 个答案:

答案 0 :(得分:8)

我之前从未听说过“Econo jit”。我确实看到谷歌链接,他们都指向谈论.NET 1.x的旧文章。 “econo”部分似乎是通过不优化生成的机器代码和跳过IL验证来实现的。

此选项当然不再存在,因为.NET 2.0。只有一种类型的抖动,IL总是被验证,但优化可以关闭。就像在程序的Debug构建中一样,[Debuggable]属性控制它。有不同的抖动,微软提供的可以瞄准x86,x64或ARM处理器。但这是一个逻辑上的区别,不同的处理器需要不同的机器代码。抖动选择是自动的。关闭优化没什么意义。

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

答案 1 :(得分:0)

你的意思是改变JIT编译器的编译器选项吗?

Is there any way to change the .NET JIT compiler to favor performance over compile time?

或者你的意思是使用与.net一起提供的完全不同的编译器?我不知道这是可能的。例如,如果您在.net旁边安装了mono,则需要使用mono显式启动,这不是正在运行的.net程序集可以决定的。

相关问题