可能是一个新手错误,但我得到了一些奇怪的东西。我正在尝试将 .NET 性能计数器编织到应用程序中。
当我在我的平均性能计数器上调用该incrementBy(value)
方法时,它也会按值更改我的基本计数器的 RawValue。我检查了变量名并认为一切都是正确的。
然后,当我调用increment()
我的基本计数器时,它会将 1 加到 avgcounter 的原始值,并增加基本计数器……增加对伤害的侮辱!
有没有其他人见过这种行为?关于发生了什么以及如何解决它的任何建议?
在代码中,我使用两个不同的计数器来测量我编写的合并排序所花费的时间。我有一个用于排序经过时间的瞬时计数器和一个平均计数器。
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+value,AvgCounterBase 为 7+value AvgCounterBase.Increment() 'AvgCounter.RV 为 7+value+1,AvgCounterBase 为 7+value+1
我想我可能用错了计数器,但为什么改变平均值的原始值似乎也改变了基数的原始值?我认为这不应该发生。