Blog

Best of Xebia Tech-Liste Juli 2007: Genauigkeit von System.getCurrentTimeMillis()

Erwin van der Koogh

Aktualisiert Oktober 23, 2025
2 Minuten

Bei Xebia haben wir eine interne Mailingliste, auf der viele interessante technische Diskussionen geführt werden. Da wir eine Leidenschaft für die Weitergabe von Wissen haben, dachten wir, wir geben Ihnen einen Einblick in einige aktuelle Themen. Dies ist der erste Teil einer Serie, die wir planen. Wir haben diesen speziellen Mail-Thread ausgewählt, weil er eine technische Frage beantwortet, die viele Leute haben könnten. Und er stellt auch eine wenig bekannte Funktion von Java 5 vor.

VonJan Vermeir
ThemaGenauigkeit von System.getCurrentTimeMillis()
DatumMo 23/07/2007 15:51
Hallo, wir messen die verstrichene Zeit für die Verarbeitung einer Nachricht. Jeder gemessene Vorgang dauert ein paar Millisekunden, daher frage ich mich, wie genau System.getCurrentTimeMillis() ist. Ich habe eine vage Erinnerung daran, dass die Genauigkeit nicht wirklich Millisekunden beträgt, wie der Name vermuten lässt, und dass sie je nach Plattform und JVM-Anbieter variieren kann. Weiß jemand etwas Genaues? Jan.
VonJeroen Borgers
Betreff:Re: Genauigkeit von System.getCurrentTimeMillis()
DatumMo 23/07/2007 15:54
Die Granularität der Zeitmessung hängt vom Betriebssystem ab. Viele Betriebssysteme messen die Zeit in Einheiten von zehn Millisekunden. Mir ist nicht bekannt, dass verschiedene VMs hier unterschiedlich vorgehen. Seit Java 5 gibt es den API-Aufruf System.nanoTime(), der Ihnen mehr Genauigkeit bieten kann. Er gibt den aktuellen Wert des präzisesten verfügbaren Systemtimers in Nanosekunden zurück. Er bietet Nanosekundenpräzision, aber nicht unbedingt Nanosekundengenauigkeit, was wiederum vom Betriebssystem abhängt. Diese Funktion ist nur für relative Vergleiche innerhalb der gleichen VM geeignet.Wofür verwenden Sie diese Funktion? Beim Benchmarking wollen Sie in der Regel nur ausreichend lange Zeiträume wie Sekunden messen, so dass Sie sich nicht um diese Genauigkeit kümmern müssen. Mit freundlichen Grüßen, Jeroen.
VonMachiel Groeneveld
Betreff:Re: Genauigkeit von System.getCurrentTimeMillis()
DatumDi 24/07/2007 10:36
Das könnte Sie interessieren: time : Java Glossar
VonJeroen Borgers
Betreff:Re: Genauigkeit von System.getCurrentTimeMillis()
DatumDi 24/07/2007 11:06
Einige zusätzliche Informationen: In der Java Bug Database heißt es, dass getNanoTime unter Windows XP genauer ist als currentTimeMillis, aber die Ausführung ist teurer. Verwenden Sie es also nicht zu oft. Einige weitere Informationen zu Linux:Unter Linux scheinen die Dinge etwas eindeutiger zu sein. Um System.nanoTime() wie angegeben ausführen zu können, benötigt die VM eine monotone Uhr und verarbeitet clock_gettime. Wenn CLOCK_MONOTONIC nicht unterstützt wird, ist keine monotone Uhr für die VM verfügbar und System.nanoTime() verhält sich wie gettimeofday. Gettimeofday misst mit einer Genauigkeit von Mikrosekunden. Mit freundlichen Grüßen, Jeroen.

Verfasst von

Erwin van der Koogh

Contact

Let’s discuss how we can support your journey.