タイムラインのプロファイリングを開始する
タイムラインプロファイリング中に、dotTrace は一時的なコールスタックとスレッド状態データを収集します。 ネイティブアプリケーションをプロファイリングする場合、サンプリング と同じ呼び出し時間に関するデータが得られますが、それがタイムラインに紐付いています。 このようにして、一般的な「どのメソッドが最も遅いか?」という問題だけでなく、イベントの順序が重要な問題―UI フリーズ、過剰なガベージコレクション、不均等なワークロード分散、不十分なファイル I/O など―も分析できます。
プロファイラの実行とスナップショットの取得
タイムラインプロファイリングを開始するには、セッションを構成するときに タイムライン プロファイリングタイプを選択します。
スナップショットを収集するプロセスは、 パフォーマンスプロファイリングのプロセスと同じです。 アプリケーションの実行中に スナップショットを取得して待機する ボタンをクリックするだけです。 収集されたタイムラインプロファイリングスナップショットを分析するには、 dotTrace ビューアーと呼ばれる別の dotTrace コンポーネントを使用してください。
タイムラインのスナップショットを最初に見る

ビューアーでの分析ワークフローは非常にシンプルで、収集した一時的なデータをフィルターで詳細に分析するだけです。
では、フィルターはどこにあるのでしょうか? 実際、画面上のほとんどすべての UI 要素はデータを表示するだけでなく、特定のフィルターを適用することもできます。 フィルターの結果は、常に特定の条件で選択された時間間隔やポイントイベントのセットです。 たとえば、 イベント | ファイル操作 をクリックすると、dotTrace に アプリケーションがファイル I/O 操作を行ったすべてのスレッド上のすべての時間間隔を選択させることができます。 Main スレッドを スレッド リストでクリックすると、 メインスレッドの存続期間を選択できます。
もちろん、フィルターは組み合わせて利用できます。 上記で紹介した 2 つのフィルターを順に有効化すると、結果として次のフィルターができます: メインスレッドがファイル I/O 操作を行ったすべての時間間隔を選択。 フィルターをうまく組み合わせることで、アプリケーションのほぼすべての側面を調査できます。
使い方
次に、最も重要な dotTrace ビューアーの使用例を見てみましょう。
CPU 使用率が高い間隔を見つけて選択する
CPU 使用率が高い間隔は、アプリケーションの全体的なパフォーマンスを評価し、最高の時間でメソッドを見つける必要がある場合に重要です。 プロセス概要ダイアグラムを使用して、このような間隔をすばやく見つけて選択できます:

最も遅いメソッドを見つけ、その呼び出しツリーを表示する
興味のある時間間隔を見つけたら、次のステップはこの間隔で最も遅いメソッドを見つけてメソッドの呼び出しツリーを調べることです。 後者は、「なぜメソッドが遅いのか」または「メソッドの正確な子コールがほとんどの時間を占めるもの」を特定できます。 両方の操作は、 コールスタック ウィンドウで、 ホットスポットリスト(区間内で最も自身/合計時間が多いメソッドを表示)および 呼び出しツリーを使って実行できます:

方法で何が起こっているかをすばやく理解する
バージョン 2017.1 以降、dotTrace ビューアーにはとても便利な サブシステム機能があります。 サブシステムの目的は、「自分のアプリで一体何が起こっているのか?」という主要な疑問や、「なぜパフォーマンスが低下しているのか?」「なぜこれほど多くのメモリが割り当てられているのか?」など、より具体的な疑問にすばやく答えることです。 パフォーマンスの低下がファイル操作、JIT、文字列処理、あるいは自分のコードの過剰な作業に関連しているのでしょうか? サブシステムフィルターは、選択した時間間隔でさまざまなアクティビティにどれだけの時間が配布済みかを示す唯一の場所です。 下記の例では、サブシステムバーがメソッド内の主な時間がロック競合によって占められていることを示しています:

メソッドの親呼び出しを参照
問題のあるメソッドを調べるときには、子コールをチェックするだけでなく、メソッドがどのように呼び出されるかを理解することも重要です。 このために、 呼び出しツリー を 追跡モードに切り替えることができます。 このモードでは、スタック内の最初のメソッドまでの実行パスを見ることができます(ある意味では、 バックトレース は逆 呼び出しツリー です)。

名前でメソッドを検索する
特定のメソッドのパフォーマンス、つまりかかる時間やタイムライン上での呼び出し位置などを確認したいケースもあります。 この場合は、関心のあるメソッドを名前で探せます。 たとえば、下記の例では Factorial メソッドを探します:

dotTrace Viewer がメソッドを見つけた直後に、このメソッドによるフィルターも自動的に適用することに注意してください。
UI フリーズの原因を見つける
UI フリーズの分析は、dotTrace が最も得意とするフィールドです。 アプリケーションの GUI がフリーズする間隔が自動的に検出されます。 通常は、UI フリーズを選択して ホットスポットリストを調べるだけです:

過度のメモリ割り当ての原因を見つける
過剰なメモリ割り当て、またはより正確には、ガベージコレクションの形でのその結果は、アプリケーションのパフォーマンスに大きな影響を与える可能性があります。 パフォーマンス分析では、アプリケーションのメモリ割り当ての起源を理解することが非常に重要です。 以下の例は、 メモリの割り当てイベントを使用して、最も多くのメモリを割り当てるホットスポットを特定する方法を示しています。

HTTP リクエストをトレースする
HTTP リクエストをトレースできることは、Web アプリケーションでパフォーマンスの問題を分析する際にとても重要です。 dotTrace では、APM(アプリケーション パフォーマンス管理)システムと同様にトランザクションをトレースでき、特定の URL へのリクエストをフィルタリングしたり、その背後にある HTTP メソッドや、リクエスト処理のためにサーバーが行うすべての操作(SQL トランザクションや .NET コードなど)も確認できます。 さらに、dotTrace には APM システムにはない大きな利点として、本格的な呼び出しツリー分析機能があります:
