Я хочу сделать некоторые измерения производительности для определенного метода, но я хотел бы усреднить время, необходимое для завершения. (Это приложение С# Winforms, но этот вопрос вполне может применяться к другим фреймворкам.)
У меня есть секундомер, который я reset в начале метода и останавливается в конце. Я хотел бы сохранить последние 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);
}
Это кажется неэффективным каким-то образом, но, возможно, это не так.
Предложения?