4

NGenを使用して、.NETアプリケーションのネイティブのプリコンパイル済みイメージを作成できることを認識しています。

しかし、アプリケーションがJITで費やした時間をどのように測定しますか?どのプロファイリングツールがこれを測定しますか?そうする無料のツールはありますか?これを行う前に、どれだけの時間を節約できるか知りたいのですが。

4

2 に答える 2

4

残念ながら、取得できる「JITの絶対時間」統計はありません。CLRは、定期的に更新される「%Time in Jit」パフォーマンスカウンターを公開しますが、サンプリングすることを選択した場合と同じくらい正確です。

このパフォーマンスカウンターには、WindowsパフォーマンスモニターツールまたはRedGateのANTSプロファイラーなどのツールを使用して非常に簡単にアクセスできます。これが私が最初に触れた方法です。プログラムでアクセスする必要がある場合は、WMIまたは.NETPerformanceCounterクラスを使用できます。

于 2011-04-24T05:04:36.827 に答える
3

JITの影響の測定に関するこの記事は非常に役に立ちました。基本的に、ウォームスタートアップシナリオにはNGenを使用します。コールドスタートアップ時間は通常、DLLをメモリにロードすることによって支配されます。JITコンパイルは、ウォームスタートアップにはるかに大きな影響を与えます。

xperfのインストール方法については、ちょっとあいまいです。基本的には、Windows 7 .NET 4 SDKをダウンロードして、パフォーマンスツールキットを選択してください。次に、管理者としてVS 2010コマンドプロンプトを開き、プロファイリングするプログラムのディレクトリに移動して、記事のコマンドに従います。

その基本的な要点は、xperfキャプチャを使用すると、プロセスにドリルダウンして、clrjit.dllで費やされた時間を確認できることです。私の場合、CPU時間の30%がウォームスタートアップに費やされました。

于 2011-05-13T00:57:36.493 に答える