C #: Esta classe de benchmarking é precisa?
Eu criei uma classe simples para avaliar alguns métodos meus. Mas é preciso? Eu sou meio novo em benchmarking, timing, et cetera, então achei que poderia pedir algum feedback aqui. Além disso, se é bom, talvez alguém possa fazer uso também :)
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;
}
}
}
Você pode usá-lo assim:
var avg = Benchmark.This(() => SomeMethod()).Take(500).Average();
Algum feedback? Parece ser bastante estável e preciso ou perdi alguma coisa?