18

あまり変わらないことがわかっている場合、ASP.NET アプリケーションである NGEN を使用する方がよいでしょうか? それともJITで十分ですか?

私が質問した唯一の理由は、2002 年のJeffrey Richter によるこの記事に次のように書かれているからです。

そしてもちろん、Microsoft は CLR とその JIT コンパイラの改善に懸命に取り組んでおり、より高速に実行し、より最適化されたコードを生成し、より効率的にメモリを使用できるようにしています。これらの改善には時間がかかります。待ちきれない開発者のために、.NET Framework 再頒布可能パッケージには、NGen.exe というユーティリティが含まれています。

4

6 に答える 6

22

NGenは起動時間のみを支援します。つまり、JITを実行した後よりもコードの実行速度が速くなることはありません。確かに、NGenは実行しないが、JITは実行するいくつかの最適化があると思います。

したがって、主な質問は、起動時間に問題がありますか?ASP.NETアプリケーションの起動時間のどれだけがJITと他のコストになるかはわかりませんが、JITのパフォーマンスマネージャーのグラフを見て、実際にどれだけのコストがかかっているかを確認する必要があります。 。

(可用性の点では、ローリングリスタートを実行できるように複数のサーバーを使用すると、NGENed Webアプリを備えた単一のサーバーよりもはるかに多くのメリットが得られます。)

于 2008-12-22T09:24:14.440 に答える
10

NGenはASP.NETに移行する方法ではありません。binフォルダーに.dllを作成することは最終ステップではありません。これらは、フォルダーにweb/maching.config設定を適用して再度コンパイルされC:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Filesます。NGenの代わりに、初期ロード時間を短縮するには、Webサイトの公開ツールまたはaspnet_compiler.exeを使用します

于 2009-06-02T05:06:37.707 に答える
1

NGENの主な利点が、起動時間だけであるかどうかはわかりません。アプリケーションが「%Time in JIT」に苦しんでいる場合、これは潜在的な救済策としてリストされています:http: //msdn.microsoft.com/en -us / library / dd264972(VS.100).aspx

この議論は、 JITされたマシンコードがどのようにキャッシュされて再利用されるかについての別の質問と密接に関連していますか?

于 2009-10-21T20:13:22.170 に答える
0

今夜これを調べていて、次のことに出くわしました。

共通言語ランタイムは、NGEN で作成したイメージを共有アプリケーション ドメインに読み込むことができません。ASP.NET 標準アセンブリは共有され、共有アプリケーション ドメインに読み込まれるため、Ngen.exe を使用してそれらをローカル コンピューターのネイティブ イメージ キャッシュにインストールすることはできません。 http://support.microsoft.com/kb/331979

これが ASP.net アプリまたはアプリ自体から参照されたアセンブリを参照しているだけなのかどうかわかりませんか?

于 2009-05-28T21:59:19.563 に答える
0

はい、この youtube ビデオは実際にそれを示していますNGEN.exe パフォーマンス チューニングのビデオ

ただし、注意点はチェック、チェックしてから実装してください。

于 2014-06-12T15:41:03.107 に答える