我想对一个特定的方法进行一些性能测量,但我想要计算完成该方法所需时间的平均值。(这是一个 C# Winforms 应用程序,但这个问题也同样适用于其他框架)
我有一个 Stopwatch 对象,在方法开始时重置,结束时停止。我想将最后 10 个时间值存储到列表或数组中,每添加一个新值就会将最旧的值推出列表。
然后,我会定期调用另一个方法来计算所有存储值的平均值。
我是否正确地认为这个结构是一个循环缓冲区?
如何创建具有最佳性能的缓冲区?目前我的代码如下:
然后,我会定期调用另一个方法来计算所有存储值的平均值。
我是否正确地认为这个结构是一个循环缓冲区?
如何创建具有最佳性能的缓冲区?目前我的代码如下:
List<long> PerfTimes = new List<long>(10);
// ...
private void DoStuff()
{
MyStopWatch.Restart();
// ...
MyStopWatch.Stop();
PerfTimes.Add(MyStopWatch.ElapsedMilliseconds);
if (PerfTimes.Count > 10) PerfTimes.RemoveAt(0);
}
这些代码看起来有点低效,但也许并不是。
有什么建议吗?