Nein, ist es nicht. Verwenden Sie die Stoppuhr (in System.Diagnostics
)
Stoppuhr sw = Stoppuhr.StartNew();
FühreArbeitAus();
sw.Stop();
Console.WriteLine("Benötigte Zeit: {0}ms", sw.Elapsed.TotalMilliseconds);
Die Stoppuhr überprüft automatisch das Vorhandensein von hochauflösenden Timern.
Es ist erwähnenswert, dass DateTime.Now
oft deutlich langsamer ist als DateTime.UtcNow
aufgrund der Arbeiten, die mit Zeitzonen, DST und dergleichen durchgeführt werden müssen.
DateTime.UtcNow hat in der Regel eine Auflösung von 15 ms. Lesen Sie den Blog-Post von John Chapman über die Präzision von DateTime.Now
für eine gute Zusammenfassung.
Interessante Trivia: Die Stoppuhr greift auf DateTime.UtcNow
zurück, wenn Ihre Hardware keinen Hochfrequenzzähler unterstützt. Sie können prüfen, ob die Stoppuhr Hardware verwendet, um hohe Präzision zu erreichen, indem Sie das statische Feld Stopwatch.IsHighResolution betrachten.
0 Stimmen
Übrigens, wenn Sie nicht auf der Suche nach etwas Schnellem und Dreckigem sind, können Leistungsindikatoren verwendet werden.
1 Stimmen
Wenn Sie eine größere Genauigkeit benötigen, verwenden Sie Stopwatch.GetTimestamp, ansonsten ist die Antwort gut.
0 Stimmen
@dbasnett Können Sie in einer Antwort mehr ins Detail gehen?
0 Stimmen
Im obigen Beispiel ändern Sie start und endtime in long und weisen Sie ihnen statt DateTime.Now Stopwatch.GetTimestamp zu. Die benötigte Zeit beträgt (end-start)/Stopwatch.Frequency.
0 Stimmen
Siehe auch: Der Fall gegen DateTime.Now
0 Stimmen
Jedes Mal, wenn Sie DateTime.Now verwenden würden, fragen Sie sich, ob Sie nicht stattdessen DateTime.UtcNow verwenden sollten. Das gesagt, ist Stopwatch die richtige Lösung.
2 Stimmen
"Best" ist subjektiv. Diese Frage muss auf objektive Weise definieren, was mit "best" gemeint ist.