dotTrace 2020.1ヘルプ

プロファイラオプション

デフォルトでは、プロファイラオプションセクションは次のパラメータで構成されています。

プロファイリング・タイプ

dotTraceがプロファイリングデータを収集する方法を定義します。次の表は、適切なプロファイリングタイプの選択に役立ちます。詳細については、プロファイリングメソッドの概要を参照してください。

説明

ユースケース

サンプリング

正確な時間測定、呼び出し数の測定は行われません。

ほとんどの場合におすすめ。初めてアプリでパフォーマンスの課題を探すときに理想的です。

トレース

正確なコール数測定、プロファイリングオーバーヘッドのために時間測定が不正確になることがあります。

サンプリングデータが足りないとき。例:アルゴリズムの複雑さを分析するため(呼び出し回数に関する情報が呼び出し時間の値よりも価値がある場合)。

1行ずつ

コードの各行は測定されます。呼び出し時間値は巨大なプロファイラーオーバーヘッドが原因で不正確です。
オーバーヘッドを減らすために、フィルタを使用して特定のメソッドのみをプロファイルできます。

高度なユースケースのみ。ex:どの機能が課題を引き起こしているのかを知っていて、その各行を分析したいとき。

タイムライン

スレッド状態、アプリケーションイベント、およびその他のマルチスレッドデータに関する一時的なデータを収集します。Windows(ETW)のイベントトレースに基づいています。

ほとんどの場合におすすめ。特に、マルチスレッドアプリケーションの分析用です。たとえば、UIフリーズ、過度のガベージコレクション、不均一なワークロード分散、不十分なI/Oなどの原因を特定するために使用します。

最初からプロファイリングデータを収集する

選択すると、dotTraceは起動直後にプロファイリングデータの記録を開始します。それ以外の場合、パフォーマンスコントローラー ウィンドウで開始をクリックした後にのみ、dotTraceはこれらのデータの収集を開始します。

拡張

詳細設定を選択した場合は、次のプロファイラオプションを追加で指定できます。

  • 時間測定
    このオプションは、dotTraceが呼び出し時間を計算する方法を定義します。通常、これは、dotTraceがスレッドが動作していないときに時間を計算するかどうかの選択です。詳細については、時間測定方法を参照してください。

    リアルタイム (パフォーマンスカウンタ)

    おすすめです。dotTraceは、メソッドの入り口と出口の間に渡される全体のリアルタイムを計算します。今回はアプリスレッドの状態には依存しません。時間はシステムパフォーマンスカウンタを使用して計算されます。

    リアルタイム (CPU命令)

    dotTraceは、メソッドの入り口と出口の間に渡される全体のリアルタイムを計算します。今回はアプリスレッドの状態には依存しません。時間はCPUレジスタを使用して計算されます。

    スレッド時間

    dotTraceは特定のスレッドが実行されている時間だけを計算します。スレッドが待機またはスリープしている時間は計算に含まれません。

    スレッドサイクル時間

    dotTraceは特定のスレッドが実行されている時間だけを計算します。スレッドが待機またはスリープしている時間は計算に含まれません。時間はCPUレジスタを使用して計算されます。

    このセクションの次の表は、あなたのケースに適した時間測定方法を選択できます。

  • インライン化を有効にする
    (トレース、行ごと)dotTraceでJITインライン化をオフにし、アプリケーションのソースコードの構造によく似た呼び出しスタックを取得する場合は、このオプションをオフにします。

  • 高い正確性
    (トレース、行ごと)選択すると、dotTraceはより多くの時間サンプルを取得することにより、プロファイラー自体で費やされた時間を考慮します。

  • ネイティブ割り当てを収集する
    (タイムライン)選択された場合、dotTraceはプロファイリングされたアプリケーションがネイティブな(管理されていない)ヒープで行うすべてのメモリ割り当てについての情報を収集します。このオプションを選択するには、Windowsパフォーマンスツールキット(英語)がコンピューターにインストールされている必要があります。

  • デバッグ出力を収集する
    (タイムライン)選択されている場合、dotTraceはプロファイリングされたアプリケーションがデバッグ出力に送信するすべてのメッセージに関する情報を収集します。

  • TPLイベントを収集する
    (タイムライン)選択すると、プロファイリングパフォーマンスが影響を受ける可能性がありますが、dotTraceはTask Parallel Library(TPL)データを収集します。オフにした場合、呼び出しツリーasync 呼び出しノードには Task ノードが自分のawait継続部品が不足しているんだろうが存在します。dotTraceが非同期コールの分析の非同期コードとどのように連携するかについて詳しく学びましょう。
    アプリケーションがマルチタスクを使用していない場合、またはこの情報が不要な場合は、このオプションをオフにしてください。

  • プロファイラAPIを使用する
    プロファイリングされたアプリケーションのコードから直接プロファイリングを制御できます。例:コードの正確な位置にスナップショットを撮ること。APIによるプロファイリングプロセスの制御でAPIを使用する方法についてさらに学びましょう。

フィルターによるライン単位のプロファイリングの最適化

行単位のプロファイリングは特定の場合に有効ですが、常に時間がかかります。プロファイリングオーバーヘッドを最小限に抑えるために、いくつかのルールを定義できます。それらによると、すべての機能がラインごとにプロファイルされているわけではなく、さらに調査するのが本当に面白い機能だけがプロファイルされています。

必要な機能だけに一致するフィルタを作成して設定することができます。

新しいフィルタを作成するには

  1. 高度なプロファイリングオプションを見るためにAdvancedをクリックしてください。

  2. フィルターの編集ボタンをクリックします。

  3. プロファイリング・フィルターダイアログでフィルターの追加をクリックします。
    このダイアログの詳細については、ダイアログ: プロファイリング・フィルターを参照してください。

  4. フィルターの追加ダイアログで、フィルタルールのタイプを選択します。

    • のプロファイルコード - 指定されたコード項目をプロファイリングに含め、他のすべてのコード項目を除外します。

    • コードをプロファイルしない - 指定されたコード項目をプロファイリングから除外します。

    • 属性でマークされたコードをプロファイルしない - 指定された属性を持つコード項目をプロファイリングから除外します。

  5. 最初の2つのオプションのいずれかを選択した場合は、アセンブリに含めるか、またはプロファイルから除外するアセンブリ、クラス、および/またはメソッドを指定します。コード項目は、互いに独立してフィルタリングされます。例:メソッドを指定し、アセンブリおよびクラスのアスタリスク(*)を残して、すべてのアセンブリおよびすべてのクラスの指定された名前を持つメソッドを除外します。

  6. 最後のオプションを選択した場合は、シンボルをプロファイリングから除外するために使用される属性の名前を指定します。オプションで、この属性が宣言されているアセンブリ名を指定します。

  7. OKをクリックしてフィルタの追加を終了します。

  8. プロファイリング・フィルターダイアログで、保存をクリックして変更を保存し、適用します。

いつでもフィルタに対して定義されたパターンを変更し、セッションごとに適用するフィルタを変更することができます。

最終更新日: 2020年5月14日

関連ページ:

プロファイリングメソッドの概要

dotTraceは、アプリケーションをプロファイリングする2つの方法を提供します。パフォーマンスプロファイリング、タイムラインプロファイリング、プロファイラオプションでプロファイリング・タイプを選択すると、それらの間で選択できます。両方の方法の詳細は、このセクションで次に説明します。最終更新日: 2...

プロファイリングセッションの制御

プロファイリング設定を構成してセッションを実行すると、dotTraceコントローラーウィンドウが開きます*。*dotTraceコマンドラインプロファイラでは使用できません。プロファイリングセッションを手動で制御するには、dotTraceコントローラーウィンドウのボタンを使用します。開始: パフォーマ...

時間測定方法

dotTraceは、呼び出しの実行時間をいくつかの方法で測定できます。リアルタイム (パフォーマンスカウンタ)、リアルタイム (CPU命令)、スレッド時間、スレッドサイクル時間、時間測定メソッドは、プロファイリングセッションを構成するときにプロファイラオプションで選択されます。リアルタイム (CPU...

デバッグ出力

デバッグ出力を分析できるようにするには、高度なプロファイリングセッションオプションでデバッグ出力を収集するを選択する必要があります。イベントフィルタでデバッグ出力が選択されている場合、タイムラインビューアーはアプリケーションがデバッグ出力に書き込むポイントイベントのみを表示します。システムメソッドを...

非同期コールの分析

非同期コードの短所の1つは、プロファイルを作成してそのパフォーマンスを分析することは非常に難しいということです。これは、非同期メソッドが実行されると、制御が別のスレッドに切り替えられ、結果として得られた呼び出しツリーが絡んで戻るためです。dotTraceは、非同期コードの分析を劇的に単純化します。呼...