【问题标题】:How to change the type of JIT I want to use如何更改我想使用的 JIT 类型
【发布时间】:2012-07-09 11:42:23
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 您是从哪里得知 .Net 中的这三种 JIT 的?能给个链接吗?
  • 没有见过也没有听说过 .net 中的 JIT 类型。据我所知,是 JIT 还是没有 JIT (NGen)。根据过去使用其他编译器的经验,未优化的输出是可能的,这是我会让其他“傻瓜”踏上的道路。
  • 只要您执行以下操作就可以了:1) 在“发布”配置中构建您的代码(或者更具体地说,启用优化代码设置)和 2) 运行您的代码您可以使用的 .NET 框架的最新版本。其他一切都取决于代码编写的好坏和硬件运行的好坏。
  • @JonathanRupp:还有托尼·霍普金森:看到你的回复我真的很惊讶。我很确定你们俩都在 .NET 方面经验丰富,而我只是一个新手。但是我知道这种类型的 JIT 是很常见的事情,很多像我一样的人都知道,甚至在面试中被问到。今天,我发现面试官问我如何使用特定类型的 JIT。我无法回答。请查看此 Web 链接/站点(您的 Microsoft 网站):) forums.asp.net/t/1703160.aspx/1
  • @TonyHopkinson:还有很多网站都提到了这 3 种 JIT。看到你们中的许多人回复我真的很惊讶:S 我是在梦中的世界吗? google.co.in/…

标签: c# .net jit


【解决方案1】:

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

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

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

【讨论】:

  • 汉斯先生,请看下面的这个链接。 ASP.NET官方网站论坛;)forums.asp.net/t/1703160.aspx/1我很惊讶,顺便看看你的回答,谢谢
  • 您能解释一下“关闭优化”吗?我如何实现它?我在谷歌看到调试模式生成优化代码但不是发布模式。为什么以及如何:(
  • 这是我的答案,DebuggableAttribute。指定 DebuggingModes.DisableOptimizations 以抑制优化。不要使用它。
【解决方案2】:

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

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

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

【讨论】:

  • James 感谢您的回复,在我写到这里之前,我已经看过您发布的链接,但我不太了解。我的问题是,默认情况下 JIT .NET 的类型是什么,是否可以灵活地在任何配置文件(比如 machine.config)等中将 jit 更改为另一个?
猜你喜欢
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 2022-06-18
  • 2021-06-14
  • 1970-01-01
  • 2014-09-20
  • 2019-03-12
  • 2021-12-12
相关资源
最近更新 更多