dotTrace 2025.1 ヘルプ

フォールドコール

呼び出しツリーは、無意味な呼び出しのグループを解析の対象にすることで簡素化できます。つまり、システム関数呼び出しと再帰呼び出しのチェーンです。

システムコールを折りたたむ

システムコールは、非ユーザーコードの呼び出しです。たとえば、System および Microsoft 名前空間からのメソッドの呼び出しです。通常、これらの呼び出しは除外され、呼び出しツリーで灰色のフォントで表示されます。フォールディングを使用して、システムコールのチェーンを非表示にします。

  • 折りたたむことができるシステムコールチェーンは、Unfolded chain アイコンでマークされています。

  • 折りたたまれたコールチェーンは、Folded chain アイコンでマークされます。

  • ユーザーアセンブリをシステムアセンブリとしてマークできることに注意してください。

システムコールのチェーンを折りたたむには

  1. システムコールを含む希望のコールチェーンを選択します。

  2. Unfolded chain をクリックするか、Ctrl+Space を押してコールを折りたたみます。

システムコールのチェーンを展開するには

  1. システムコールを含む希望のコールチェーンを選択します。

  2. Folded chain をクリックするか、Ctrl+Space を押してコールを展開します。

サンプル

Call Tree example

たとえば、上記の例で、すべてのシステムコールを折りたたむ必要があるように折りたたみを設定した場合、呼び出しツリーは次のようになります。

UserMethod1
| UserMethod2
| | SystemMethod2
| Folded chain SystemMethod1
| UserMethod1
| UserMethod2
| SystemMethod1

再帰呼び出しをフォールドする

再帰呼び出しスタックは深く、分析が難しい場合があります。複数の再帰呼び出しを含む複雑な呼び出しスタックでは、ほぼ無限のスタックスクロールが必要になります。このようなコールスタックの分析を簡素化するために、再帰呼び出しを折りたたむことができます。再帰呼び出しのチェーンが折りたたまれると、dotTrace はこの呼び出しツリーを再計算し (すべての再帰サブツリーで特定のメソッドの呼び出し時間を要約します)、メソッドシグネチャーによって情報を提示します。

  • 再帰呼び出しには、Recursive calls アイコンが表示されます。

  • 折りたたまれた再帰呼び出しには Recursive calls アイコンが表示されます。

再帰呼び出しを折りたたむには

  1. 呼び出しツリーで再帰関数呼び出しを選択します。

  2. 関数呼び出しを折りたたむには、Recursive calls をクリックします。

再帰呼び出しを展開するには

  1. 呼び出しツリーで再帰関数呼び出しを選択します。

  2. 関数呼び出しを展開するには、Recursive calls をクリックします。

サンプル

再帰呼び出しが折りたたまれたときに dotTrace Viewer が呼び出し時間を計算する方法をよりよく理解するために、例を考えてみましょう。

Call Tree example

上記の例で A UserMethod1 という呼び出しから始まる再帰呼び出しを折りたたむと、呼び出しツリーは次のようになります(各文字はそれぞれの呼び出しを表す)。

Recursive calls UserMethod1 A + B + C + D + E + F + G + H + I
| UserMethod2 E + G
| | SystemMethod1 G
| SystemMethod1 C + H
| SystemMethod2 I

関連ページ:

システムモジュールのリストの構成

場合によっては、dotTrace が特定のユーザモジュール / アセンブリをシステムとして扱うようにすることもできます。これは、たとえば、ユーザーモジュールがいくつかのコア機能を提供し、最適化されていない場合に役立ちます。ユーザーモジュールをシステムモジュールとしてマークすると、dotTrace がシステムメソッドに適用するすべてのルールが、このユーザーアセンブリのメソッドにも適用されます。これは、メソッドの時間がホットスポットで計算され、システムコールの折りたたみが行われる方法です。ユーザーア...

予測パフォーマンス

通常、パフォーマンスプロファイリングの主な目的は、アプリまたはアプリの特定の機能を減速させる方法を決定することです。しかし、このような方法を見つけたら、この特定の方法を最適化することでアプリのパフォーマンスが向上することを確認することは理にかなっています。dotTrace を使用すると、呼び出しツリーから任意のメソッドを除外して、「アプリにそのような機能がない場合はどうなりますか? 特定のコールスタックから 1 つのメソッド出現箇所だけを除外し、すべてのコールスタックからすべてのメソッド出現箇所を...