ソフトウェア トレースのパフォーマンス コストとは
一般に、ソフトウェア トレースのパフォーマンス コストは非常に小さくなります。 コードは最小化され、バッファーは効率的に管理され、メッセージはバイナリ形式で記述されます。 また、パフォーマンスの大きなドレインであるトレース メッセージの書式設定は、ユーザーがトレース メッセージの書式設定と表示を選択するまで延期されます。
WPP ソフトウェア トレース マクロを使用してドライバーにソフトウェア トレースを追加する場合、プロバイダーがトレース セッションに対して有効になっていない限り、パフォーマンス コストはほとんど発生しません。
WPP マクロは、ソフトウェア トレース コードに対する If ステートメント内の 3 つの条件付きチェックに相当します。 これらのチェックは、プロバイダーが有効になっていない限り、トレース メッセージが生成されないようにします。 WPP マクロは、次の形式でコードを生成します。
If (WPP_CHECK_INIT && WPP_LEVEL_FLAGS_ENABLED) {
Call trace_message_routine
}
この生成されたコードでは、WPP_CHECK_INITは 1 つの条件付きチェックで構成されます。 WPP_LEVEL_FLAGS_ENABLEDは、レベルまたはフラグ フィルターが 1 つしかない場合に、1 つの条件付きチェックで構成されます。 それ以外の場合、WPP_LEVEL_FLAGS_ENABLEDは 2 つの条件付きチェックで構成されます。
パフォーマンスを向上させるためにWPP_CHECK_INIT チェックを除外する方法の詳細については、「トレースの前に WPP マクロによって生成される条件付きチェックを最適化できますか?」を参照してください。
Note
WPP ソフトウェア トレース以外の方法を使用してドライバーにソフトウェア トレースを実装する場合は、パフォーマンス コストが発生する可能性があります。 効果は実装方法によって異なります。