10 Stimmen

Was ist die maximale Genauigkeit des Timers in .NET?

Ich frage mich, was die Genauigkeit der Timer-Klasse in System.Timers ist, denn es ist ein double (was darauf hindeuten würde, dass Sie Bruchteile von Millisekunden haben können). Wie hoch ist sie?

0voto

Arno Punkte 4824

Die Timer-Auflösung geht ohne großen Implementierungsaufwand bis in den 1ms-Bereich. Ich habe gerade den Grund für die double Präzision in 本答 . Wenn ein System so konfiguriert wird, dass es mit 1024 Unterbrechungen pro Sekunde läuft (unter Verwendung der Multimedia-Timer-API), beträgt die Zeit zwischen den Unterbrechungen 0,9765625 ms. Die Standardauflösung für Zeitangaben ist 100ns. Diese Werte werden als Ganzzahlen gespeichert. Der Wert 0,9765625 kann nicht gespeichert werden ohne Genauigkeitsverlust in einer Ganzzahl mit 100 ns Auflösung gespeichert werden. Die letzte Ziffer (5) steht für 500 ps. Die Auflösung muss also um drei Größenordnungen höher sein. Die Speicherung dieser Zeit Werte in Ganzzahlen mit einer Auflösung von 100 ps ist hoffnungslos, da eine 8-Byte-Ganzzahl mit 100 ps Auflösung nach 21350 Tagen oder etwa 58 Jahren ablaufen würde. Diese Zeitspanne ist zu kurz, um von irgendjemandem akzeptiert zu werden (denken Sie an das Y2K-Szenario!).

In der verlinkten Antwort erfahren Sie mehr über die Einzelheiten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X