JetBrains Rider 2024.2 ヘルプ

プロファイリング結果を分析する

アプリケーションの実行が遅すぎると、問題を特定して実行するアクションを理解することが困難になる可能性があります。アプリケーションのプロファイリングとパフォーマンススナップショットの取得後の次のステップは、スナップショットを開いてデータを分析することです。

通常、パフォーマンス分析の最終的なゴールは、パフォーマンスの問題を引き起こす特定の方法を特定することです。このタスクの実行を支援するために、dotTrace プロファイラーウィンドウには、呼び出しツリーホットスポットの 2 つのビューがあります。

dotTrace Profiler. Snapshot analysis

ホットスポット

Hotspots は、選択したすべてのスレッドのメソッドのリストを実行時間順に表示します。ホットスポットを使用して、呼び出しツリーの特定の部分で最も遅いメソッドを特定します。

トップメソッドは、dotTrace スタンドアロンのメソッドとサブシステムビューに対応します。トップメソッドの操作方法に関するすべてのトピックについては、dotTrace のドキュメントを参照してください。

呼び出しツリー

呼び出しツリーはメソッド実行パスを示します。ツリー内の各メソッドノードは、特定のスレッドによって実行されるトップレベルのメソッドを表します。メソッドノードには、呼び出されたメソッドとプロファイリング時に収集されたメトリクスがリストされます。

コールツリーをフレームグラフモードに切り替えることもできます。グラフの各バーは、コールの合計時間を表します。これにより、最も遅い呼び出しチェーンをすばやく見つけることができます。

呼び出しツリーは、スタンドアロン dotTrace バージョンの呼び出しツリービューに対応します。呼び出しツリーの操作方法に関するすべてのトピックについては、dotTrace のドキュメントを参照してください。

タイムラインスナップショットのデータをフィルタリングする

タイムラインスナップショットには、呼び出しが時間内にどのように分散されるかに関する追加データがあります。これにより、はるかに複雑な時間間隔分析を実行できます。たとえば、UI がフリーズした間隔、GC をブロックした時間間隔などのみを残すことができます。タイムラインフィルターの詳細については、dotTrace のドキュメントを参照してください。

開いているスナップショットに現在適用されているフィルターは、dotTrace プロファイラーウィンドウの上部に表示されます。すべてのフィルターを一度に削除するには、リセットをクリックします。

イベントでフィルターを適用する

  • dotTrace は、ガベージコレクションとファイル操作の間隔、メモリ割り当てデータ、発生した例外に関するデータなど、さまざまなアプリケーションデータを収集します。イベントのリストからイベントを選択することは、さらなる分析の良い開始点になる可能性があります。例: アプリケーションにメモリを割り当てるメソッドを確認するには、.NET メモリ割り当てフィルターをオンにします。イベントの詳細については、dotTrace のドキュメントを参照してください。

間隔フィルターを適用する (UI フリーズ、受信 HTTP リクエスト、タスク)

  • 間隔フィルターの考え方は、「特定のイベントが発生するすべての時間間隔を選択する」ことです。例: UI フリーズの原因を分析する場合、UI フリーズをオンにすることで、フリーズが発生した時間間隔のみを残すことができます。イベントと間隔フィルターの違いは、複数の間隔フィルターを一度に適用できることです (間隔フィルターによって選択された時間間隔は、1 つのスレッド内で重複する場合があります)。間隔フィルターの詳細については、dotTrace ドキュメントを参照してください。

スレッドでフィルターを適用する

  • デフォルトでは、呼び出しツリーはすべてのスレッドからのすべてのメソッド呼び出しを含む集約ツリースレッド: すべてを表示します。フィルターを適用するには、リストからスレッドを選択します。この後、呼び出しツリー(およびトップメソッドも同様)は選択されたスレッドからのメソッドのみを表示します。

スレッドの状態でフィルターを適用する

  • スレッドの状態フィルターの考え方は、「スレッドが指定された状態にあるすべての時間間隔を選択することです。実行中または待機中」のどちらかです。フィルターを適用するには、スレッドの状態で状態を選択します。

メソッドでフィルターを適用する

  • 時々、コールツリーの特定のメソッドに集中したいかもしれません。これを行うには、呼び出しツリーまたはトップメソッドでメソッドを選択し、コンテキストメニューですべてのメソッド出現箇所をマージするを選択します。その後、選択されたメソッドはすべての出現箇所を含む呼び出しツリーのルートノードになります。他のすべての呼び出しは隠されています。

サブシステムでフィルターを適用する

  • サブシステムフィルターを使用すると、特定のコールツリー内の時間がさまざまなコンポーネント (ユーザーコード、システムコード、WPF、LINQ、ファイル I/O、コレクションなど) にどのように分散されているかを迅速に評価できます。フィルターを適用するには、サブシステムでサブシステムを選択します。サブシステムの詳細については、次のトピックを参照してください。

スナップショットからコードに移動できるだけでなく、コードからスナップショットに移動することもできることに注意してください。どこでも検索コマンド Ctrl+N, G を使用すると、コード内だけでなく、開いているパフォーマンススナップショット内でもメソッドを検索できます。この目的のために、結果として得られる候補リストにはスナップショットカテゴリが含まれています。このカテゴリでメソッドを選択すると、Rider は dotTrace プロファイラーウィンドウ内の対応するメソッドの場所に移動します。

Search Everywhere

次に移動機能は、パフォーマンススナップショットへのナビゲーションもサポートしています。エディターで、メソッドにキャレットを置き、Ctrl+Shift+G を押してからパフォーマンススナップショットで表示を選択します。

スナップショットを操作する

収集されたすべてのスナップショットは、dotTrace プロファイラーウィンドウのすべてのスナップショットタブに表示されます。ここでは、分析のためにスナップショットを開いたり、削除したり、他のコンピューターにエクスポートするために .dtp(.dtt)形式で保存したりできます。

スナップショットを開く

  1. (オプション)現在開いているソリューションのスナップショットだけに興味がある場合は、すべてのスナップショットタブで Show snapshots from the solution をクリックします。

  2. すべてのスナップショットタブで、目的のスナップショットを選択します。

  3. 以下のいずれか 1 つを実行します:

    • スナップショットをダブルクリックします。

    • コンテキストメニューで、オープンを選択します。

    これにより、dotTrace プロファイラーウィンドウの別のタブでスナップショットが開きます。

スナップショットをエクスポートする

  1. (オプション)現在開いているソリューションのスナップショットだけに興味がある場合は、すべてのスナップショットタブで Show snapshots from the solution をクリックします。

  2. すべてのスナップショットタブで、目的のスナップショットを選択します。

  3. コンテキストメニューで、エクスポートを選択します。

  4. パスとファイル名を指定して OK をクリックします。

エクスポートされたスナップショットを開く

  1. すべてのスナップショットタブで、Open snapshot をクリックします。

  2. スナップショットへのパスを指定して、OK をクリックします。スナップショットがすべてのスナップショットリストに追加されます。

関連ページ:

dotTrace プロファイラーウィンドウ

このウィンドウでは、.NET アプリケーションのパフォーマンスのボトルネックをプロファイルして分析できます。dotTrace プロファイラーは、以下で構成されるマルチタブウィンドウです。収集されたスナップショットを開くために使用されるすべてのスナップショットタブ、プロファイリングセッションを制御するために使用されるプロファイリングタブ。収集されたパフォーマンススナップショットを分析するために使用される分析タブ。すべてのスナップショットタブ:すべてのスナップショットタブは、以前に収集されたスナッ...

ホットスポット

Hotspots は、選択したすべてのスレッドのメソッドのリストを実行時間順に表示します。他のフィルターと組み合わせてホットスポットを使用して、特定の条件で「トップ」メソッドを決定します。例:

呼び出しツリー

呼び出しツリーはメソッド実行パスを示します。ツリー内の各メソッドノードは、特定のスレッドによって実行されるトップレベルのメソッドを表します。メソッドノードには、呼び出されたメソッドとプロファイリング時に収集されたメトリクスがリストされます。呼び出しツリーを使用して: アプリケーションアクティビティの簡単な概要を取得する: 最も「高額な」呼び出しを移動するまたはフレームグラフを使用します。最も遅いメソッド (最も時間がかかるメソッド、または頻繁に呼び出されるメソッド) の実行パスを次の方法で調べます。...

アプリケーションのプロファイル

プロファイルするアプリケーションの種類に関係なく、ワークフローは常に同じであり、次の内容で構成されます。使用するプロファイリング構成を決定する、プロファイリングセッションを実行し、スナップショットを取得する、収集したスナップショットを分析する、セッションを実行してスナップショットを取得する:セッションを開始してスナップショットを取得するツールバーで、プロファイルを作成する実行構成を選択します。実行 | スイッチプロファイリング設定メニューで、プロファイリング構成を選択します。サンプリング、トレ...

フィルター

フィルターウィンドウは、主要な分析ツールの 1 つです。これには、さまざまな条件によるプロファイリングデータのスライスとダイシングを可能にする多数のフィルターが含まれています。フィルターの作業の結果は、常に、特定の条件によって選択された一連の時間間隔またはポイントイベントです。フィルターウィンドウを開くにはメニュー項目を選択します。スナップショットの種類に応じて、いくつかのフィルターの種類があります。イベント (タイムラインのスナップショットのみ)、スレッド (サンプリング、トレース、行単位のスナッ...

イベント

タイムラインプロファイリング中に、dotTrace は、ガベージコレクションとファイル操作の間隔、メモリ割り当てデータ、発生した例外に関するデータなど、さまざまなアプリケーションデータを収集します。dotTrace Viewer での作業は、詳細な分析のためにこれらのイベントの 1 つを選択することから始まります。イベントフィルターでは、次の項目を選択できます。未選択 (デフォルト) – 収集されたすべてのタイムラインデータを分析に使用できます。時間間隔の長さはミリ秒単位で測定されます。.NET...