c# - 如何更改我要使用的 JIT 类型

标签 c# .net jit

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

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

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

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

不确定,如果此设置在 machine.config 或其他什么?

最佳答案

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

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

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

关于c# - 如何更改我要使用的 JIT 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11394345/

相关文章:

c# - 为什么一个接口(interface)会实现另一个接口(interface)?

c# - 如何发布 OData 实体并将其同时链接到多个现有实体?

c# - 在 ASP.NET MVC 应用程序中管理全局设置?

c# - API函数不一致404错误

.net - 使用 Microsoft.Office.Interop.Excel 从 Excel 读取文本格式

assembly - Commodore PET BASIC 从 $00C2 开始组装什么?

.net - 有没有办法诱使 .NET JIT 编译器运行另一种方法?

c# - .NET 局部变量优化

c# - MVC 表单在提交时未通过模型

c# - 占用高 CPU 的非托管方法调用