我想做一些特定方法的性能测量,但我想平均完成所需的时间。 (这是一个C#Winforms应用程序,但是这个问题很可能适用于其他框架。)如何保留仅最后n个对象的列表?
我有一个秒表,我在方法开始时重置并在结束时停止。 我想将最后的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,我计划使用平均值显示给用户,作为解析对象所用时间的指示器。这是图形翻译工具的一部分。 – JYelton