Aus persönlicher Erfahrung kann die System.Diagnostics.Stopwatch
Klasse verwendet werden, um die Ausführungszeit einer Methode zu messen. ACHTUNG : Sie ist nicht ganz genau!
Betrachten Sie das folgende Beispiel:
Stopwatch sw;
for(int index = 0; index < 10; index++)
{
sw = Stopwatch.StartNew();
DoSomething();
Console.WriteLine(sw.ElapsedMilliseconds);
}
sw.Stop();
Beispielergebnisse
132ms
4ms
3ms
3ms
2ms
3ms
34ms
2ms
1ms
1ms
Jetzt wunderst du dich; "Nun, warum hat es das erste Mal 132 ms gedauert und den Rest der Zeit deutlich weniger?"
Die Antwort lautet, dass Stopwatch
"Hintergrundgeräusche" in .NET wie JITing nicht kompensiert werden. Wenn Sie Ihre Methode zum ersten Mal ausführen, wird sie daher zuerst von .NET JIT ausgeführt. Die dafür erforderliche Zeit wird zur Ausführungszeit addiert. Ebenso führen andere Faktoren dazu, dass die Ausführungszeit variiert.
Was Sie wirklich auf der Suche nach absoluter Genauigkeit sein sollten, ist das Leistungsprofil !
Schauen Sie sich Folgendes an:
RedGate ANTS Performance Profiler ist ein kommerzielles Produkt, liefert jedoch sehr genaue Ergebnisse. - Steigern Sie die Leistung Ihrer Anwendungen mit .NET-Profilen
Hier ist ein StackOverflow-Artikel zur Profilerstellung: - Was sind einige gute .NET-Profiler?
Ich habe auch einen Artikel über Leistungsprofile mit Stoppuhr geschrieben, den Sie sich ansehen möchten - Leistungsprofile in .NET
ThreadPool.QueueUserWorkItem(delegate { CopyFiles(folder, dest); });
Innenseite hat, aber die Stoppuhr stoppt, bevor alles erledigt ist.