我想做一些特定方法的性能測量,但我想平均完成所需的時間。 (這是一個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