18

.NET 4.5の新しいパフォーマンス強化の1つは、「MultiCodeJIT」の導入です。

詳細については、こちらをご覧ください。

これを試しましたが、アプリケーションに影響がないようです。

私が興味を持っている理由は、私のアプリ(IronScheme)は、NGENされていない場合でも起動にかなり長い時間がかかるためです。これは、起動時にかなりの量のJIT'ngが関与していることを意味します。(1.4秒対NGENの場合は0.1秒)。

これを有効にする方法の指示に従いましたが、「小さい」(4〜12KB)が作成されていることがわかります。しかし、その後の起動では、起動時間の改善にはまったく影響がないようです。まだ1.4秒です。

誰かが実際にこの作品を見た(または作った)ことがありますか?

また、どのコードが「追跡」されるかについての制限はありますか?例:アセンブリの読み込みコンテキスト、一時的なアセンブリなど。作成されたファイルは決して大きくならないように見えるので、これを尋ねますが、実際にはかなりの量のコードを生成しています(一時的なアセンブリで)。

私が遭遇したバグの1つはSetProfileRoot、/をパス区切り文字として理解していないように見えることでした。必ず\を使用してください。

4

2 に答える 2

21

Microsoftで使用している経験則では、マルチコアJITを使用すると、NGENの起動パフォーマンスの約半分が得られます。したがって、アプリがNGENありで0.1秒、NGENなしで1.4秒で起動する場合、マルチコアJITの起動には約0.75秒かかると予想されます。

そうは言っても、プログラムの実行順序がMCJの有無にかかわらず同じであることを保証するために、いくつかの制限を設ける必要がありました。MCJは、モジュールがフォアグラウンドスレッドによってロードされるのを待機しているバックグラウンドスレッドを一時停止し、アセンブリ解決またはモジュール解決イベントがある場合はバックグラウンドコンパイルを中止することがあります。

あなたのケースで何が起こっているのかを知りたい場合は、MCJ機能のETW(Event Tracing For Windows)インストルメンテーションがあり、トレースを取得するとこれらのイベントを収集できるバージョンのPerfViewがまもなくリリースされますあなたのアプリのスタートアップの。

更新: PerfViewが更新され、背景のJIT情報を表示できるようになりました。最新バージョン(1.2.2.0)で診断する手順は次のとおりです。

  1. アプリケーション起動のPerfViewを使用して、メインのPerfViewメニューから[収集]->[実行]または[収集]->[収集]を使用してトレースを収集します。
  2. [収集]->[実行]を使用した場合は、[コマンド]テキストボックスに.exeの名前を入力し、ファイル名(IronScheme.etlなど)を選択し、[詳細オプション]から[バックグラウンドJIT]を選択して、[コマンドの実行]をクリックします。
  3. アプリケーションを閉じて、生成されるIronScheme.etlファイルをダブルクリックします。
  4. IronScheme.etlの下のリストにあるJITStatsビューをダブルクリックすると、ポップアップするビューに次のようなものが表示されます。
This process uses Background JIT compilation (System.Runtime.ProfileOptimize) 
    Methods Background JITTed : 2,951 
    Percent # Methods Background JITTed : 52.9% 
    MSec Background JITTing : 3,901 
    Percent Time JITTing is Background : 50.9% 
    Background JIT Thread : 11308 

[生のバックグラウンドJit診断を表示]をクリックすると、すべてのMCJイベントをExcelで表示できます。私が尋ねるのを忘れた1つの質問:これをマルチコアマシンまたはマルチコアVMで実行していますか?論理プロセッサが1つしかないVMでMCJをテストするのはよくある間違いです。

于 2012-10-19T17:12:41.420 に答える
11

起動中に電話Activator.CreateInstanceをかけるとMCJが殺されるようですか?

むしろ、それがアセンブリ解決をトリガーし、MCJを完全に停止させたようです。その後は絶対に働かないでください。多分MSDNドキュメントはこれに言及するべきです。

于 2012-11-07T21:43:11.507 に答える