1

c#のパフォーマンスカウンターを使用して、アプリケーション(実際にはWindowsサービス)のスループットを追跡しようとしています。しかし、これに取り組む方法について質問があります...私のアプリケーションはXMLドキュメントを解析し、単位時間あたりに解析されるドキュメントの数を監視したいと思います。ドキュメントを解析するたびに_counter.Increment()を使用していますが、これにより、解析されるドキュメントの総数が常に表示されます(フラットグラフ)。サンプリングする間隔を設定し、その間隔内のカウントを取得できる素敵なプロットを作成したいと思います。

これはパフォーマンスカウンターを使用して可能ですか、それとも別のアプローチを取る必要がありますか?

ありがとう。

4

3 に答える 3

3

アイテムのレート(たとえば、1秒あたり)を確認する場合は、別のカウンタータイプを使用する必要があります。例えば:

PerformanceCounterType.RateOfCountsPerSecond32

アイテムごとにこれをインクリメントすると、合計カウント(PerformanceCounterType.NumberOfItems32で取得されるもの)ではなく、1秒あたりのカウントとしてパフォーマンスに表示されます。

于 2009-10-13T09:50:08.310 に答える
0

ファイルの解析が終了したら、いつでもカウンターをデクリメントできます。このようにして、任意の時点でアクティブな解析の数を取得します。これらの解析には異なる間隔がかかるため、現実的には非線形グラフが得られます。

于 2009-10-13T09:48:10.387 に答える
0

最も簡単なのは、ドキュメントが終了したときのタイムスタンプを保存することです(つまり、1つの大きな配列)

このデータがあれば、完了した合計、処理速度、タイムステップごとの速度変化などを簡単に差し引くことができます。

これらの統計を行うには、Excelを使用して(最初は)、後でソフトウェアに追加できるいくつかの派手なグラフライブラリを使用して行うことができます。

于 2009-10-13T09:48:33.007 に答える