dotTrace 2020.2 ヘルプ

プロファイラオプション

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

プロファイリングタイプ

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

説明 ユースケース
サンプリング 正確な時間測定、呼び出し数の測定は行われません。

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

トレース 正確なコールは測定をカウントし、時間測定はプロファイリングオーバーヘッドのために不正確になる場合があります。 サンプリングデータが足りないとき。例:アルゴリズムの複雑さを分析するため(呼び出し回数に関する情報が呼び出し時間の値よりも価値がある場合)。
1 行ずつ コードの各行が測定され、プロファイラーのオーバーヘッドが大きいため、呼び出し時間の値は不正確です。
オーバーヘッドを下げるために、フィルターを使用して特定のメソッドのみをプロファイリングできます。
高度なユースケースのみ。ex:どの機能が課題を引き起こしているのかを知っていて、その各行を分析したいとき。
タイムライン スレッド状態、アプリケーションイベント、およびその他のマルチスレッドデータに関する一時的なデータを収集します。Windows(ETW)のイベントトレースに基づいています。

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

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

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

拡張

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

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

    リアルタイム (パフォーマンスカウンタ) オススメです。dotTrace は、メソッドの開始と終了の間で渡される全体的なリアルタイムを計算します。今回は、アプリのスレッドの状態には依存しません。時間は、システムパフォーマンスカウンターを使用して計算されます。
    リアルタイム (CPU 命令)dotTrace は、メソッドの入り口と出口の間に渡される全体のリアルタイムを計算します。今回はアプリスレッドの状態には依存しません。時間は CPU レジスタを使用して計算されます。
    スレッド時間 dotTrace は特定のスレッドが実行されている時間だけを計算します。スレッドが待機またはスリープしている時間は計算に含まれません。
    スレッドサイクル時間 dotTrace は特定のスレッドが実行されている時間だけを計算します。スレッドが待機またはスリープしている時間は計算に含まれません。時間は CPU レジスタを使用して計算されます。

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

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

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

  • ネイティブプロファイリングを有効にする
    (タイムライン、Windows の Unity / Mono)選択した場合、dotTrace はネイティブコールスタックデータを収集します。結果のスナップショットには、マネージコールスタックとネイティブコールスタックの両方が含まれます。このプロファイリングオプションは、Unity ゲームのパフォーマンスの課題を見つけるのに役立つ場合があります。

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

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

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

  • プロファイラ API を使用する
    プロファイルされたアプリケーションのコードから直接プロファイリングを制御できます。例:コードの正確なポイントでスナップショットを撮ります。API によるプロファイリングプロセスの制御で API を使用する方法の詳細を参照してください。

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

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

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

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

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

  2. フィルターの編集ボタンをクリックしてください。

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

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

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

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

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

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

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

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

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

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

最終更新日 : 2020 年 8 月 06 日

関連ページ:

基本概念

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

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

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

時間測定方法

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

デバッグ出力

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

非同期コールの分析

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