2015-05-04 118 views
14

安装Visual Studio 2015 RC1后,我加载了一个旧的ASP.NET项目,并将.NET版本更改为4.6。该项目工作正常,但网站仍然加载速度一如既往缓慢。我期待RyuJIT能够踢球,但显然不是。在Visual Studio 2015 RC中启用RyuJIT

我看了一下关于RyuJIT的this thread,我看不到任何RyuJIT的痕迹。

空控制台项目也会出现同样的问题。我无法在输出窗口,模块窗口或运行窗口任务中看到Ryujit。

因此,RyuJIT无法检测到,因为它以前用于早期预览,或者它没有运行。无论哪种方式,我卡住了。

我该如何验证RyuJIT是否在VS 2015中运行,并且我需要做些什么才能让它运行以防万一它不在?

+0

你确实意识到RyuJIT只有64位?也许你运行的是32位? – leppie

+0

@leppie:我正在使用Windows 8.1 x64。在控制台项目中。 “首选32位”复选框未选中,因此我假定它使用64位。在ASP.NET项目中,该复选框呈灰色,不确定这意味着什么。 –

+0

没有选择*不*使用它在.NET 4.6中,它总是用于jit 64位代码。不*期望提高速度,这不是项目的目标。 –

回答

6

首先,进入该项目的设置,调试选项卡,并确保本机代码的调试启用。这使您能够在Visual Studio的“模块”窗口中查看本机以及托管的可执行文件。

现在在调试运行程序或发行模式,并打开模块窗口。你会看到以下两件事之一:

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

当启用fallback mechanism时,会加载compatjit.dll。否则,它不会被加载。

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

关于RyuJIT VS JIT64。 JIT64生成的代码本身当前比RyuJIT生成的代码更快。所以不要指望这方面的性能有所提升。另一方面,编译时间会有所不同。根据Microsoft,RyuJIT的编译时间可以比JIT64快30%,高达15%。所以不要指望这方面的性能有所提升。

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

注意

如果目标平台是“任何CPU”,在“首选32位”复选框,在构建标签必须选中。否则,将使用x86 JIT。

+0

谢谢你的回答! :) –

6

在这里你去

安装后,有两种方法打开RyuJIT。如果您只想为一个应用程序启用RyuJIT,请设置一个环境变量:COMPLUS_AltJit = *。如果要为整个机器启用RyuJIT,请将注册表项HKLM \ SOFTWARE \ Microsoft.NETFramework \ AltJit设置为字符串“*”。这两种方法都会导致64位CLR使用RyuJIT而不是JIT64。无一不是临时设置,安装RyuJIT不会使你的机器的任何永久性的变化(从一个目录安装RyuJIT文件放在一边,那是。)

.NET Framework 4.6 - Testing with RyuJIT

中获得,但它应该是默认情况下已激活

.NET Framework 4.6包含用于64位进程的新Just-In-Time(JIT)编译器,称为RyuJIT。它是默认启用的。它仍然是预览版本,因此您可能会发现尚未解决的问题。

.NET Framework 4.6 - Testing with RyuJIT

两者出于测试目的,如果你encouter与RyuJIT任何异常,您可以在app.config中的设置将其关闭。这使用旧的JIT64。

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

然而,RyuJIT CTP5目前并不在Visual Studio的 “14” CTP4工作。无论如何,你不需要它,因为在Visual Studio“14”CTP4上默认启用RyuJIT。 :)(RyuJIT的Visual Studio中的版本“14” CTP4比这个CTP稍微大一点,但不是很大。)

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

摘自我发现了一个博客帖子中,以确定所使用JIT运行时,但它会考虑den JIT64编译器中的已知错误。示例代码发布为here。我不确定这是否是一种可靠的方法来确定它。

+0

感谢您的回复!在那种情况下,我想知道为什么RyuJIT在编译速度方面似乎没有做任何事情。你有什么想法,为什么这可能是这种情况? –

+0

@AdrianGrigore:不,我不确定。平台目标是为您的项目设置的? AnyCPU,x64? – Jehof

+0

是的。该项目设置为x64,“首选32位”已禁用,并且该项目在Windows 8.1 x64上的IIS中运行。另外,如果我将构建目标设置为x86,则IIS拒绝运行它。 –

0

RyuJIT在编译代码时会自动激活,这只是一个编译器,它可以在64位模式下运行,访问内存以提高编译速度30%,并且在JIT编译器中花费的时间只是启动时间的一个组件,所以应用程序启动速度不会快一倍,因为JIT速度是其两倍。

您可以检查您目前的RAM内存状态和运行过程中提供免费的可用内存,如果它是足够的,那么它必须跑得更快,否则有帐户的时候考虑到内存分配。

+0

因为我安装了VS 2015 RC,所以编译时间并没有减少。我正在使用16 GB内存的计算机,大约有5 GB的额外内存可用,所以我不认为内存不足是问题所在。 –

相关问题