我是否需要将我的应用程序定位到 .NET 4.6 才能利用 RyuJIT?

Do I need to target my application to .NET 4.6 to take advantage of RyuJIT?

阅读 Announcing .NET Framework 4.6 似乎暗示 RyuJIT 仅适用于 .NET 4.6。

这是否意味着我需要将我的应用程序重新定位到 .NET 4.6 以使 RyuJIT 生效?

简答:没有。

长答案:使用调试器确保您拥有新版本。首先使用资源管理器在运行时目录中有一个 look-see,导航到 C:\Windows\Microsoft.NET\Framework64\v4.0.30319。您会在那里找到两个抖动,clrjit.dll 是基于 Ryujit 项目的新抖动,compatjit.dll 是旧版 x64 抖动。

项目 > 属性 > 调试 > 勾选 "Enable native code debugging option"。使用构建选项卡并确保您已删除抖动强制,必须取消选中 "Prefer 32-bit" 选项,必须将 "Platform target" 设置为 AnyCPU。并使用“应用程序”选项卡选择框架目标。

使用“调试”>“步入”开始调试。 Debug > Windows > Modules 显示已加载模块的列表。在该列表中找到抖动 DLL,单击 "Name" 列 header 按名称排序。如果您看到 compatjit.dll,那么您使用的是传统抖动。请注意,您将始终看到 clrjit.dll,当使用传统抖动时,它们都会被加载。

有意使用旧版 x64 抖动需要 COMPLUS_useLegacyJit 环境变量或 HKLM 中的 useLegacyJit 值或 HKCU\Software\Microsoft\.NETFramework 注册表项或 app.exe.config 文件条目:

<runtime>
  <useLegacyJit enabled="1"/>
</runtime>