Heim > Java > javaLernprogramm > Ist System.nanoTime() in Java immer noch ein zuverlässiges Zeitmesswerkzeug?

Ist System.nanoTime() in Java immer noch ein zuverlässiges Zeitmesswerkzeug?

DDD
Freigeben: 2024-11-12 00:55:03
Original
1069 Leute haben es durchsucht

Is System.nanoTime() in Java Still a Reliable Time Measurement Tool?

Ist System.nanoTime() in Java wirklich nutzlos?

Frage:

A Der Blogbeitrag mit dem Titel „Vorsicht vor System.nanoTime() in Java“ wirft Bedenken auf, dass System.nanoTime() auf x86-Systemen aufgrund der Verwendung von CPU-spezifischen Zählern möglicherweise falsche Zeitwerte zurückgeben kann. In einem Multi-Core-System könnte Thread-Scheduling dazu führen, dass ein Prozessor mit einem niedrigeren Zähler zugewiesen wird, was zu negativen Werten für Zeitunterschiede führt.

Antwort:

Die Die Behauptungen des Blogbeitrags wurden 2011 verfasst und sind nicht mehr zutreffend. Nachfolgende Betriebssystemupdates haben diese Probleme unter Windows und Linux behoben.

Windows:

Unter Windows XP Service Pack 2 und höher verwendet System.nanoTime() den QueryPerformanceCounter /QueryPerformanceFrequency API, die vom Hardware Abstraction Layer (HAL) implementiert wird, um eine konsistente Zeitquelle über alle Prozessoren hinweg bereitzustellen.

Linux:

Die Linux-Uhr „clock_gettime(CLOCK_REALTIME)“ Die Funktion stellt sicher, dass die Zeit auf allen Prozessoren konsistent ist. Ab Kernel-Version 2.6.18 wird eine sichere Taktquelle verwendet, wenn nicht synchronisierte Zeitstempelzähler oder Zeitstempelzähler mit variabler Frequenz erkannt werden.

Andere Architekturen:

Es liegen nur begrenzte Informationen vor Informationen zu anderen Architekturen wie SPARC und Solaris sind verfügbar. Es wird jedoch allgemein davon ausgegangen, dass moderne virtuelle Maschinen (VMs) eine konsistente Zeitquelle für Gastbetriebssysteme bereitstellen, unabhängig von der zugrunde liegenden Hardware.

Fazit:

System .nanoTime() bleibt eine gültige Methode zur Messung von Zeitunterschieden in Java. Die im Blogbeitrag von 2011 geäußerten Bedenken wurden behoben und gelten nicht für moderne Systemimplementierungen.

Das obige ist der detaillierte Inhalt vonIst System.nanoTime() in Java immer noch ein zuverlässiges Zeitmesswerkzeug?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage