Pre-JIT コンパイル (ngen.exe) の利点を知りたいです。Native Image Generator (NGen) プロセスの役割と、それが必要な理由は何ですか?
例を挙げてください。
Pre-JIT コンパイル (ngen.exe) の利点を知りたいです。Native Image Generator (NGen) プロセスの役割と、それが必要な理由は何ですか?
例を挙げてください。
.NET プラットフォームでコードを実行するには、Common Intermediate Language (CIL) 表現をマシン コードに変換する必要があります。これが実行直前に行われる場合、これは JIT (Just In Time) コンパイルと呼ばれます。JIT の出力は永続化されないため、マネージド アプリケーションは起動のたびに JIT を実行する必要があります。
または、プリコンパイルを使用して、JIT コンパイルに関連する起動オーバーヘッドを削減できます。NGen はプリコンパイルを実行し、ネイティブ イメージをネイティブ イメージ キャッシュに保持します。その後、アプリケーションはネイティブ イメージで実行できるようになり、JIT コンパイルのオーバーヘッドが減少するため、起動時間が短縮される可能性があります。当初、NGen はインストール時のテクノロジであり、開発者はアプリケーション インストーラーに NGen コマンドを発行させ、インストール時にプリコンパイルをトリガーしました。詳細については、NGen が強力な新機能でパフォーマンスを向上させる をご覧ください。この記事では、NGen を活用するサンプル アプリケーションを提供します。
Windows 8 (.NET 4.5) では、新しい NGen モード「Auto NGen」が導入されました。基本的に、.NET ランタイムはマネージド アプリケーションの使用ログを生成します。システムがアイドル状態の場合、自動メンテナンス タスクがバックグラウンドで実行され、ネイティブ イメージが生成されます。これにより、開発者は NGen を明示的に扱う必要がなくなります。この機能は、Windows ストアをターゲットにするかGACを使用する .NET 4.5 以降のアプリケーションでのみ有効になることに注意してください。役立つ可能性のある MSDN ページを次に示します: ネイティブ イメージの作成
これは、NGen と関連テクノロジの概要 です。速度が必要ですか? .NET アプリケーションの起動の高速化
最後に、.NET フレームワーク ライブラリ自体は、パフォーマンスを向上させるために NGen を使用します。.NET フレームワークがサービスされると、一部のネイティブ イメージが無効になります。次に、NGen を実行して、無効なネイティブ イメージを再生成する必要があります。これは、アイドル時間中に実行される .NET ランタイム最適化サービスを介して自動的に行われます。
MSDNごと:
Native Image Generator (Ngen.exe) は、マネージ アプリケーションのパフォーマンスを向上させるツールです。Ngen.exe は、コンパイルされたプロセッサ固有のマシン コードを含むファイルであるネイティブ イメージを作成し、ローカル コンピューターのネイティブ イメージ キャッシュにインストールします。ランタイムは、ジャストインタイム (JIT) コンパイラを使用して元のアセンブリをコンパイルする代わりに、キャッシュからのネイティブ イメージを使用できます。
ソフトウェアの起動を高速化するために、過去にインストール中に NGEN を使用しました。