14

Visual Studio 2015 RC1 をインストールした後、従来の ASP.NET プロジェクトを読み込み、.NET バージョンを 4.6 に変更しました。プロジェクトは正常に動作しますが、ウェブサイトの読み込みは相変わらず遅いです。RyuJITの活躍を期待していましたが、そうではないようです。

RyuJIT に関するこのスレッドを見てきましたが、そこに記載されているメソッドのいずれでも RyuJIT の痕跡は見られません。

空のコンソール プロジェクトでも同じ問題が発生します。出力ウィンドウ、モジュール ウィンドウ、または実行中の Windows タスクに Ryujit が表示されません。

そのため、RyuJIT は以前のプレビューにあったため検出できないか、実行されていません。いずれにせよ、私は立ち往生しています。

RyuJIT が VS 2015 で実行されていることを確認するにはどうすればよいですか?そうでない場合に実行するにはどうすればよいですか?

4

3 に答える 3

6

まず、プロジェクトの設定の [デバッグ] タブに移動し、ネイティブ コードのデバッグが有効になっていることを確認します。これにより、Visual Studio の [モジュール] ウィンドウでネイティブ実行可能ファイルとマネージ実行可能ファイルを表示できます。

プログラムをデバッグまたはリリース モードで実行し、[モジュール] ウィンドウを開きます。次の 2 つのいずれかが表示されます。

  • いずれかの clrjit.dll のみが読み込まれます。つまり、RyuJIT を使用してすべてのマネージド コードがコンパイルされます。
  • または、clrjit.dll と compatjit.dll の両方が読み込まれます。これは、レガシー JIT64 コンパイラを使用しマネージ コードをコンパイルし、他の実行可能ファイルのマネージ コードがいずれかのコンパイラを使用する可能性があることを意味します。

フォールバック メカニズムが有効な場合、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 が使用されます。

于 2015-05-17T21:25:50.470 に答える
6

どうぞ

インストール後、RyuJIT をオンにする方法は 2 つあります。1 つのアプリケーションに対してのみ RyuJIT を有効にする場合は、環境変数を設定します: COMPLUS_AltJit=*。マシン全体で RyuJIT を有効にする場合は、レジストリ キー HKLM\SOFTWARE\Microsoft.NETFramework\AltJit を文字列 "*" に設定します。どちらの方法でも、64 ビット CLR は JIT64 ではなく RyuJIT を使用します。どちらも一時的な設定です。RyuJIT をインストールしても、マシンに永続的な変更は加えられません (RyuJIT ファイルをディレクトリにインストールする以外は)。

.NET Framework 4.6から取得 - RyuJIT によるテスト

ただし、デフォルトで有効にする必要があります

.NET Framework 4.6 には、RyuJIT と呼ばれる 64 ビット プロセス用の新しい Just-In-Time (JIT) コンパイラが含まれています。デフォルトで有効になっています。これはまだプレビュー バージョンであるため、まだ修正されていない問題が見つかる可能性があります。

.NET Framework 4.6から取得 - RyuJIT によるテスト

テスト目的で、RyuJIT で例外が発生した場合は、app.config の設定でそれをオフにすることができます。これは古い JIT64 を使用します。

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

ただし、現在、RyuJIT CTP5 は Visual Studio "14" CTP4 では動作しません。RyuJIT は Visual Studio "14" CTP4 でデフォルトで有効になっているため、とにかく必要ありません。:) (Visual Studio "14" CTP4 の RyuJIT のバージョンは、この CTP より少し古いですが、それほどではありません。)

RyuJIT CTP5から引用: 出荷に近づき、SIMD サポートが向上

実行時に使用される JIT を特定するブログ投稿を見つけましたが、den JIT64 コンパイラの既知のバグが考慮されています。サンプルコードはここに掲載されています。これがそれを決定するための信頼できる方法であるかどうかはわかりません。

于 2015-05-12T10:13:06.850 に答える
0

RyuJIT は、コードのコンパイル中に自動的にアクティブになります。これは、コンパイルを 30% 高速化するために RAM にアクセスして 64 ビット モードで実行される単なるコンパイラであり、JIT コンパイラで費やされる時間は起動時間の 1 つのコンポーネントにすぎないため、アプリはJIT が 2 倍速いからといって、2 倍速く開始する必要はありません。

現在のRAMメモリのステータスと実行中のプロセスを空きメモリで確認できますが、十分な場合はより高速に実行する必要があります。

于 2015-05-13T07:26:00.283 に答える