Aus persönlicher Erfahrung kann ich sagen, dass die System.Diagnostics.Stopwatch
Klasse kann jedoch verwendet werden, um die Ausführungszeit einer Methode zu messen, HINWEIS : Das ist nicht ganz richtig!
Betrachten Sie das folgende Beispiel:
Stopwatch sw;
for(int index = 0; index < 10; index++)
{
sw = Stopwatch.StartNew();
DoSomething();
Console.WriteLine(sw.ElapsedMilliseconds);
}
sw.Stop();
Beispielhafte Ergebnisse
132ms
4ms
3ms
3ms
2ms
3ms
34ms
2ms
1ms
1ms
Jetzt fragen Sie sich das; "Und warum hat es beim ersten Mal 132 ms gedauert und beim zweiten Mal deutlich weniger?"
Die Antwort lautet, dass Stopwatch
kompensiert nicht die "Hintergrundgeräusche" in .NET, wie z.B. JITing. Wenn Sie Ihre Methode also zum ersten Mal ausführen, wird sie von .NET zuerst gejittet. Die dafür benötigte Zeit wird zur Ausführungszeit hinzugerechnet. Auch andere Faktoren können dazu führen, dass die Ausführungszeit variiert.
Was Sie wirklich für absolute Genauigkeit suchen sollten, ist Leistungsprofilierung !
Werfen Sie einen Blick auf das Folgende:
RedGate ANTS Performance Profiler ist ein kommerzielles Produkt, das jedoch sehr genaue Ergebnisse liefert. - Steigern Sie die Leistung Ihrer Anwendungen mit .NET-Profiling
Hier ist ein StackOverflow-Artikel über Profilerstellung: - Was sind einige gute .NET-Profiler?
Ich habe auch einen Artikel über Performance Profiling mit Stopwatch geschrieben, den Sie sich vielleicht ansehen möchten. Leistungsprofilierung in .NET