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?

questionAnswers(4)

yourAnswerToTheQuestion