Dot-Net

在 Visual Studio 2015 RC 中啟用 RyuJIT

  • May 17, 2015

安裝 Visual Studio 2015 RC1 後,我載入了一個舊的 ASP.NET 項目並將 .NET 版本更改為 4.6。該項目執行良好,但網站仍然像往常一樣緩慢載入。我原以為 RyuJIT 會加入,但顯然不是。

我看過這個關於 RyuJIT 的執行緒,我看不到任何 RyuJIT 的痕跡,其中描述的任何方法。

空的控制台項目也會出現同樣的問題。我在輸出視窗、模組視窗或正在執行的 Windows 任務中看不到 Ryujit。

因此,要麼像以前的預覽版那樣無法檢測到 RyuJIT,要麼它沒有執行。無論哪種方式,我都被困住了。

我如何驗證 RyuJIT 是否在 VS 2015 中執行,如果不是,我該怎麼做才能使其執行?

首先,轉到項目的設置,調試選項卡並確保已啟用本機程式碼調試。這使您能夠在 Visual Studio 的“模組”視窗中查看本機執行檔和託管執行檔。

現在在 Debug 或 Release 模式下執行程序並打開 Modules 視窗。您將看到以下兩種情況之一:

  • 要麼只載入 clrjit.dll,這意味著 RyuJIT 被用於編譯所有託管程式碼。
  • 或者 clrjit.dll 和 compatjit.dll 都已載入,這意味著舊版 JIT64 編譯器正在用於編譯託管程式碼,而其他執行檔中的託管程式碼可能使用任一編譯器。

compatjit.dll 在啟用回退機制時載入。否則,它不會載入。

請注意,如果您安裝了 .NET 4.6(又名 .NET 2015),則預設情況下將使用 RyuJIT,即使您針對的是較舊版本的框架。

關於 RyuJIT 與 JIT64。JIT64 本身生成的程式碼目前比 RyuJIT 生成的程式碼要快。所以不要指望這方面的性能改進。另一方面,編譯時間各不相同。據微軟稱,RyuJIT 的編譯時間可以比 JIT64 快 30%,15%。所以也不要指望這方面的性能改進。

但是,當 .NET 2015 發佈時,情況可能會有所改變。

筆記

如果目標平台是“Any CPU”,則必須取消選中 Build 選項卡中的“Prefer 32-bit”複選框。否則,將使用 x86 JIT。

引用自:https://stackoverflow.com/questions/30028054