C #: Czy ta klasa benchmarkingu jest dokładna?
Stworzyłem prostą klasę, aby porównać niektóre moje metody. Ale czy to jest dokładne? Jestem trochę nowy w benchmarkingu, synchronizacji, itd., Więc pomyślałem, że mogę poprosić o pewne opinie tutaj. Ponadto, jeśli jest dobrze, może ktoś inny może z niego skorzystać :)
public static class Benchmark
{
public static IEnumerable<long> This(Action subject)
{
var watch = new Stopwatch();
while (true)
{
watch.Reset();
watch.Start();
subject();
watch.Stop();
yield return watch.ElapsedTicks;
}
}
}
Możesz go użyć w ten sposób:
var avg = Benchmark.This(() => SomeMethod()).Take(500).Average();
Jakakolwiek informacja zwrotna? Czy wygląda to na dość stabilne i dokładne, czy może coś przeoczyłem?