【发布时间】:2011-06-17 22:37:45
【问题描述】:
我想对特定方法进行一些性能测量,但我想平均完成所需的时间。 (这是一个 C# Winforms 应用程序,但这个问题很可能适用于其他框架。)
我有一个秒表,我在方法开始时重置并在结束时停止。 我想将最后 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);
}
不知何故,这似乎效率低下,但也许不是。
建议?
【问题讨论】:
-
使用分析器有什么问题?
-
@Brandon,我计划使用平均值向用户显示,作为解析对象花费多长时间的指标。这是图形翻译实用程序的一部分。
标签: c# collections circular-buffer