おそらく新人エラーですが、何かおかしくなっています。.NET パフォーマンス カウンターをアプリケーションに織り込もうとしています。
平均パフォーマンス カウンターでメソッドを呼び出すincrementBy(value)
と、ベース カウンターの RawValue も値によって変更されます。変数名を確認しましたが、すべて正しいと思います。
次にincrement()
、ベース カウンターを呼び出すと、avgcounter の rawvalue に 1 が追加され、ベース カウンターがインクリメントされます... 怪我に侮辱を加えます!
他の誰かがこの種の行動を見たことがありますか? 何が起こっているのか、それを修正する方法について何か提案はありますか?
コードでは、2 つの異なるカウンターを使用して、作成したマージ ソートにかかる時間を測定しています。ソートの経過時間の瞬間カウンターと平均カウンターがあります。
Dim timePiece As New Stopwatch()
timePiece.Start()
MergeSort()
timePiece.Stop()
ElapsedCounter.RawValue = timePiece.ElapsedMilliseconds
AvgCounter.IncrementBy(timePiece.ElapsedMilliseconds)
AvgCounterBase.Increment()
私が見ているのは次のとおりです。
'Elapsed counter works as expected
'AvgCounter RawValue is 7, AvgCounterBase RawValue is also 7 before incrementing
AvgCounter.IncrementBy(value) 'AvgCounter.RV は 7+値、AvgCounterBase は 7+値 AvgCounterBase.Increment() 'AvgCounter.RV は 7+value+1、AvgCounterBase は 7+value+1
カウンターを間違って使用している可能性があると思いますが、平均の raw 値を変更するとベースの raw 値も変更されるように見えるのはなぜですか? 私はそれが起こるはずだとは思わない。