2

パフォーマンス カウンターを作成し、カウンターの値を更新する方法に関するこの記事を読み終えたところです。しかし、Windows パフォーマンス カウンターの動作パラダイムについて少し混乱しています。2 つのプログラム A と B があり、A がいくつかのパフォーマンス カウンターを通じて B のパフォーマンスを知りたいとします。次のシナリオのうち、正しいものはどれですか?

  • B はいくつかのパフォーマンス カウンターを Windows に作成/登録し、B はカウンターの値の更新を担当します。A はシステムperfmon.exeである可能性があります。A は B の実行ステータスを積極的に調査していません。A は登録済みのカウンターをチェックし、B によって提供および更新された値を取得します。A がなくても、B は登録済みのパフォーマンス カウンターを常に更新します。でも、これはBさんのパフォーマンスになんらかの負担をかけていませんか?

  • A は B の実行ステータスを積極的に調査し、パフォーマンス カウンターの値を把握します。このパラダイムでは、B には追加負担はありません。

    つまり、パフォーマンス カウンターの作成と更新は誰が担当するのでしょうか? 性能測定対象のオブジェクトプログラムは?それとも、対象プログラムのパフォーマンスを測定している対象プログラムですか? プログラム A の場合、それはプロービング シナリオですか? それとも単なる読書シナリオですか?

どうもありがとう。

4

1 に答える 1

1

パフォーマンス カウンターは興味深い質問かもしれませんが、全体的な目標は何ですか? プログラムをより速く実行する方法を知りたいですか?

そうでない場合は、この回答を無視してください。

もしそうなら、パフォーマンス カウンターは、測定したいものを数える目的で存在するという見方があります。さらに、修正したものが違いを生んだかどうかを確認するのに測定は有効ですが、パフォーマンスの問題 (ボトルネック) がどこにあるかを正確に見つけるのにはあまり役に立ちません。

ボトルネックが存在する場合 (おそらく存在する可能性があります)、削除すると時間が数パーセント (30% など) 短縮される場合、それが何であるかに関する最大かつ最も明白な手がかりは、

  • その 30% の時間で、プログラムは何をしているのでしょうか?

それが行っていることのランダムな時間のサンプルを 10 個取得すると、それらのサンプルの 10 個のうち 3 個 (多かれ少なかれ) で、ボトルネックを実行する「行為でそれをキャッチ」します。1 つのことに注意してください。「何を」と尋ねているのです。私たちは「いくら」を尋ねているのではありません。

時間がかかるからこそ、見つけやすいのです。デバッグは困難です。実行をトレースして、問題を検出する必要があります。ボトルネックを見つけるのは簡単です。

見つけるために測定する必要はありません。見つかったら、測定できます。ここでは、その件について詳しく説明します。

于 2010-06-24T00:49:20.027 に答える