サブシステムで分析を簡素化
サブシステムとは、特定のシステムコンポーネント(.NET フレームワークのさまざまな部分、外部ライブラリ、独自のコードなど)で消費される時間を簡単に把握できる、プロファイリングスナップショットデータを表示する方法です。サブシステムは、特定の名前空間またはアセンブリ内で行われたすべての呼び出しをグループ化するだけです。例: System.Windows.Forms
用のサブシステムを作成して、アプリケーション内のすべての WinForms
呼び出しを要約することができます。これは、あなたのアプリとのやりとりにどれくらいの時間が必要かを示します。
はじめに、概念、構成
ノードを選択するたびに、dotTrace は選択されたコールスタックの収集データを分析し、選択したコールスタックにさまざまなサブシステムの影響を表示します。より良い認識のために、各サブシステムはそれ自身の色を有します。カスタムカラーを割り当てたり、デフォルトのカラーを使用することができます。
新しいサブシステムを定義するには、名前を定義し、色を設定し、ルールまたは複数のルールを指定する必要があります。
新しいサブシステムを追加するには
メニューバーでオプションダイアログが開きます。
を選択します。オプションダイアログの左ペインでプロファイルをクリックします。
プロファイルペインの
新しいサブシステムを作成する近くの矢印をクリックし、空のサブシステムを追加するをクリックします。
- サブシステム定義ダイアログが開きます。
名前テキストボックスに新しい名前を入力します。
色ラベルの右側の領域をクリックして色を選択しますダイアログを開き、適切な色を選択します。
現在のプロファイルのサブシステムを無効にする場合は、現在のプロファイルでサブシステムを有効にするチェックボックスをオフにします。
- サブシステムの可視性オプションを指定する:
表示 - サブシステムは個別のエントリとして表示されます。
参加 - サブシステムの時間は、呼び出し側サブシステム内で計算されます。サブシステムは、結合するサブシステムがない場合にのみ個別に表示されます。
非表示 - サブシステムは非表示になります。サブシステムの時間は計算から除外されます。
MethodA
はSubsystemA
に属し、MethodB
(SubsystemB
に属する)を呼び出し、次にMethodC
(SubsystemC
に属する)を呼び出します。すべてのサブシステムが表示に設定されている場合、サブシステム時間は次のように計算されます。
サブシステム A = メソッド A
サブシステム B = メソッド B
サブシステム C = メソッド C
SubsystemB
を結合に設定した場合、サブシステムは次のように計算されます。
サブシステム A = メソッド A + メソッド B
サブシステム C = メソッド C
SubsystemB
を非表示に設定した場合、サブシステムは次のように計算されます。
サブシステム A = メソッド A
サブシステム C = メソッド C ルールを管理するには、追加およびクリーンをクリックします。すべてのルールがリストに表示されます。
OK をクリックして変更を保存し、サブシステム定義ダイアログを閉じます。
既存のサブシステムを複製してサブシステムを作成することもできます。
サブシステムを複製するには
メニューバーでオプションダイアログが開きます。
を選択します。オプションダイアログの左ペインでプロファイルをクリックします。
プロファイルペインの
新しいサブシステムを作成する近くの矢印をクリックし、重複サブシステムをクリックします。
- サブシステム定義ダイアログが開きます。
必要に応じて、サブシステム名テキストボックスで名前を変更します。
色ラベルの右側にある領域をクリックして、色を選択しますダイアログを開き、色を再定義します。
ルールを管理するには、追加およびクリーンをクリックします。すべてのルールがリストに表示されます。
OK をクリックして変更を保存し、サブシステム定義ダイアログを閉じます。
いつでも、既存のサブシステムに戻り、それらのルールを変更することができます。
必要なサブシステムがすべて定義されたら、設定をもう少し調整することができます。考慮する必要のあるすべてのサブシステムは、1 つのプロファイルで集められ、その重要度に従って配置されます。プロファイルは重要なサブシステムまたはアクティブなサブシステムの集合にすぎません。名前を持つことも、名前を付けないこともできます。
メソッドが異なるサブシステムの 2 つのルールと一致する場合、サブシステムのリスト内の他のルールよりも上位のサブシステムのルールが適用されます。
新しいプロファイルを作成するには
メニューバーでオプションダイアログが開きます。
を選択します。オプションダイアログの左ペインでプロファイルをクリックします。新しい名前のないプロファイルが作成されます。
プロファイルペインで
新しいプロファイルを追加をクリックします。
プロファイルのリストに、アクティブなテキストボックスが表示されます。このテキストボックスに新しいプロファイルの名前を入力します。
サブシステムのリストで、対応するチェックボックスを選択して、アクティブなサブシステムのセットを構成します。オプションで、サブシステムの順序を並べ替えることができます。これを行うには、移動するサブシステムを選択し、
選択したサブシステムを上に移動するまたは
選択したサブシステムを下に移動するをクリックします。
変更を保存するには、OK をクリックします。
複数のプロファイルがある場合は、サブシステムビューでそれらのプロファイルを切り替えて、今ここで重要と思われるアセンブリの部分を視覚化できます。
サブシステム構成の変更が満足できない場合は、デフォルトにリセットボタンを使用して、提供時のデフォルトにすばやくリセットすることができます。
説明を表示
デフォルトでは、サブシステムビューが表示されます。そうでない場合は、オプションダイアログのプロファイルページでサブシステム分析を有効にするチェックボックスを選択します。その後、新しいコールスタックを選択するたびに、dotTrace によってビューが再構築されます。
ほとんどの時間が費やされているサブシステムが最大のブロックを占めています。このブロックは、子サブシステムを表す小さなブロックで構成されています。
プロファイル切り替えボタンを使用すると、ビューの作成に応じてプロファイルをすばやく変更し、他のサブシステムを強調して再構築することができます。ビューを折りたたんだり展開したりすることもできます。
サブシステムは時間単位でソートされます。それらのそれぞれは、リーフノードが機能するツリーとして表示されます。
定義されたパターンとカスタムサブシステムに関係なく、独立して存在する 4 つの独立したサブシステムがあります。すべての機能は、アセンブリに応じて 2 つのグループに分けられ、システムコードまたはユーザーコードサブシステムに含めることができます。
システムコード - 選択されたアクティブプロファイルのルールと一致せず、標準システムライブラリに属するすべてのソースコード
ユーザーコード - 選択されたアクティブプロファイルのルールと一致せず、標準システムライブラリに属していないすべてのソースコード
残りの 2 つのサブシステムは、アプリケーション内のいくつかのアクティビティに関する情報のみを対象としています。
ガーベッジコレクション - ガベージコレクションに関連するすべてのアクティビティ
Special - all functions that do not belong to .NET libraries
ツリービューが不要な場合は、スマートモードに切り替えることができます。ビューの上部をダブルクリックして閉じます。
重要 ! SQL クエリ、競合のロック、CPU レディなどの「特別な」サブシステムが含まれています。これらのサブシステムは ETW イベントに基づいており、タイムラインビューアーでのみ使用できます。
ページには、関連ページ:

フィルターの適用
dotTrace を使用すると、ビュー内の関数のセットをグレーアウトまたは折りたたむフィルターを作成できます。module * name で新しいフィルターを追加するには:メニューバーでを選択します。オプションダイアログが開きます。左側のタブでシステムモジュールの折りたたみ項目を選択します。新しいモ

サブシステム
サブシステムフィルターを使用すると、特定のコールツリーの時間が、ユーザーとシステムコード、WPF、LINQ、コレクション、文字列などのさまざまなコンポーネントにどのくらい分散しているかを素早く評価できます。サブシステムのしくみ:いくつかの例外を除いて(以下の特別サブシステムを参照)、各サブシステムは特定の名前空間またはアセンブリ内で行われた呼び出しをグループ化するだけです。例:、アセンブリで宣言されたメソッドのすべての呼び出しは、WPF サブシステムにグループ化されます。サブシステムフィルターの...

予測パフォーマンス
大規模で複雑なアプリケーションの場合、通常、プロファイルするには多くの時間がかかります。スナップショットを分析しているうちに、時間がかかるような機能やクラスが見つかることがあります。これらの関数とクラスを最適化することで、アプリケーション全体のパフォーマンスを向上させることができます。調整機能オプションを使用すると、関数の最適化の影響をある程度即座に確認できます。選択した関数を除外したり、実行時間を実質的にゼロに減らしたい場合は、簡単に実行できます。関数呼び出しの実行時間をゼロにするには関数を選...