質問
それは我々ははるかに変更するつもりはない知っているときNGENにASP.NETアプリケーションを使用する方が良いですか?またはJITが十分に良いのですか?
ジェフリー・リヒターによって、この記事私は尋ねた唯一の理由でした> 2002年に述べています:そして、もちろん、MicrosoftはCLRを向上させることで、非常に懸命に働いています それはより速く実行されるように、そのJITコンパイラは、より最適化された生産します コード、およびメモリをより効率的に使用しています。これらの改善はかかります 時間。 、.NET Frameworkを待つことができない開発者のための 再配布はNGen.exeと呼ばれるユーティリティが含まれます。
解決
NGENだけで、起動時間を助ける - それはコードがどの速く、それはJITting後に希望よりも実行させることはありません。確かに、私はNGENはのの行いませんが、JITはないいくつかの最適化があると信じています。
だから、主な質問は:あなたは、起動時に問題があるのですか?私は、あなたはおそらく、それが本当にあなたの原価計算だどのくらいの時間を教えてJITのためのPerformance Managerのグラフをご覧ください...ところで、その他の費用対JITtingになりますどのくらいのASP.NETアプリケーションの起動時間のかわかりませんます。
(可用性の面では、あなたのNGENedのWebアプリで、単一のサーバーよりもはるかに多くの利益を与えるために起こっているあなたはローリング再起動を行うことができますので、複数のサーバを持つ。)
他のヒント
NGENは、ASP.NETのために行くための方法ではありません - binフォルダ内の.dllの作成が最終段階ではありません - 彼らはあなたに適用されるウェブ/ maching.config設定で再コンパイルされていますC:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files
フォルダ。代わりにNGENの、公開ウェブサイトツールまたはaspnet_compiler.exe
私はNGENの主な利点は、起動に時間が一人であることはよく分からない - 、高い「JIT の中の%の時間」からアプリケーションの苦しみが、これは潜在的な治療薬としてリストされている場合: http://msdn.microsoft.com/en-us /library/dd264972(VS.100).aspxするます。
議論がどのように<のhref = "https://stackoverflow.com/questions/1591073/high-fluctuating-time-in-jit-on-precompiled-asp-net-website上の別の質問に密接に関係しています「> JIT'dのマシンコードがにキャッシュされ、再使用されていますか?
私はこれに今夜を見て、次のように出くわしました。
共通言語ランタイムを使用すると、共有アプリケーションドメインにNGENで作成した画像をロードすることはできません。 ASP.NET標準アセンブリが共有され、その後、共有アプリケーションドメインにロードされるためには、ローカルコンピュータ上のネイティブイメージキャッシュにそれらをインストールするには、Ngen.exeを使用することはできません。 http://support.microsoft.com/kb/331979する
これはただのASP.netアプリやアプリ自体から参照されるアセンブリを参照する場合はどうなりますか?このわかりません
はい、それは、このユーチューブの動画はビデオNGEN.exeのパフォーマンスチューニング
しかし、注意チェックの単語、チェックし、それを実装します。
NGENは、起動時に役立ちます。たとえば、Entity Frameworkのドキュメントrel="nofollow">のの
経験的観察は、EFのランタイムアセンブリのネイティブイメージがアプリケーションの起動時間の1と3秒の間で切断することができることを示します。
コンテキストはちょうどEntity Frameworkのアセンブリです。他のアセンブリをNGenningすると、追加の高速化を提供することになる。