在 Visual Studio 2015 RC 中启用 RyuJIT

Enabling RyuJIT in Visual Studio 2015 RC

安装 Visual Studio 2015 RC1 后,我加载了遗留 ASP.NET 项目并将 .NET 版本更改为 4.6。该项目运行良好,但网站加载速度仍然像往常一样慢。我期待着 RyuJIT 的加入,但显然不是。

我已经查看了 this thread 关于 RyuJIT 的内容,但我看不到任何 RyuJIT 的踪迹以及那里描述的任何方法。

空控制台项目也会出现同样的问题。我在输出 window、模块 window 或 运行ning windows 任务中看不到 Ryujit。

所以要么无法检测到 RyuJIT,因为它以前在早期的预览中是这样,要么它不是 运行ning。不管怎样,我被卡住了。

我如何验证 RyuJIT 在 VS 2015 中 运行ning,如果不是,我需要做什么才能做到 运行?

给你

After installation, there are two ways to turn on RyuJIT. If you just want to enable RyuJIT for one application, set an environment variable: COMPLUS_AltJit=*. If you want to enable RyuJIT for your entire machine, set the registry key HKLM\SOFTWARE\Microsoft.NETFramework\AltJit to the string "*". Both methods cause the 64-bit CLR to use RyuJIT instead of JIT64. And both are temporary settings—installing RyuJIT doesn’t make any permanent changes to your machine (aside from installing the RyuJIT files in a directory, that is.)

取自.NET Framework 4.6 - Testing with RyuJIT

不过默认应该是开启的

The .NET Framework 4.6 includes new Just-In-Time (JIT) compiler for 64-bit processes, called RyuJIT. It is enabled by default. It is still a preview version, so you may discover issues that have yet to be fixed.

取自.NET Framework 4.6 - Testing with RyuJIT

出于测试目的,如果您遇到 RyuJIT 的任何异常,您可以使用 app.config 中的设置将其关闭。这使用较旧的 JIT64。

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

However, RyuJIT CTP5 currently doesn't work on Visual Studio "14" CTP4. You don't need it anyway, since RyuJIT is enabled by default on Visual Studio "14" CTP4. :) (The version of RyuJIT in Visual Studio "14" CTP4 is slightly older than this CTP, but not by much.)

取自RyuJIT CTP5: Getting closer to shipping, and with better SIMD support

我找到了一篇博文来确定运行时使用的 JIT,但它考虑了 den JIT64 编译器中的一个已知错误。示例代码已发布 here。我不确定这是否是确定它的可靠方法。

RyuJIT 在您编译代码时自动激活,这只是一个 运行 在 64 位模式下可以访问 RAM 的编译器,可将您的编译速度提高 30%,花在 JIT 编译器上的时间只是其中之一启动时间的组成部分,所以应用程序的启动速度不会因为 JIT 的速度是原来的两倍。

您可以检查您当前的 ram 内存状态和 运行正在使用可用可用内存的进程,如果足够,那么它必须 运行 更快,否则需要考虑内存分配的时间。

首先,转到项目的设置、“调试”选项卡并确保启用本机代码调试。这使您能够在 Visual Studio.

的模块 window 中查看本机和托管可执行文件

现在 运行 程序处于调试或发布模式并打开模块 window。您将看到以下两件事之一:

  • 要么只加载 clrjit.dll,这意味着 RyuJIT 被用于编译所有托管代码。
  • 或者 clrjit.dll 和 compatjit.dll 都被加载,这意味着遗留的 JIT64 编译器被用来编译 你的 托管代码,而托管代码在其他可执行文件中可能会使用任一编译器。

compatjit.dll 在 fallback mechanism 启用时加载。否则不加载。

请注意,如果您安装了 .NET 4.6(又名 .NET 2015),那么默认情况下将使用 RyuJIT,即使您针对的是旧版本的框架。

关于 RyuJIT 与 JIT64。 JIT64 生成的代码本身目前比 RyuJIT 生成的代码更快。所以不要指望这方面的性能提升。另一方面,编译时间各不相同。根据 Microsoft,RyuJIT 的编译时间最多可比 JIT64 快 30%, 最多 15%。所以也不要指望这方面的性能提升。

然而,当 .NET 2015 发布时,情况可能会有所改变。

备注

如果目标平台是 "Any CPU",则必须取消选中“构建”选项卡中的 "Prefer 32-bit" 复选框。否则,将使用 x86 JIT。