currentTimeMillis() ungenau?

Schaaaf

Bekanntes Mitglied
Hallo

ich habe mittels

Java:
long start = System.currentTimeMillis();
...
System.out.println(System.currentTimeMillis() - start);

versucht die benötigte Zeit zu nehmen zwischen zwei Stellen im Code. Wie kann es sein, dass ich da unterschiedliche Ergebnisse bekomme?
 
G

gman

Gast
Einmal ist das ein Grund. Und mit: [c]long start = System.nanoTime();[/c] wird es sonst etwas genauer. Aber solche
Microbenchmarks sind nicht immer aussagekräftig. Such mal nach "Angelika Langer" und "Mircrobenchmark", da gibt
es einen schönen Artikel zu.
 

FerFemNemBem

Bekanntes Mitglied
Halloechen,

Hallo

ich habe mittels

Java:
long start = System.currentTimeMillis();
...
System.out.println(System.currentTimeMillis() - start);

versucht die benötigte Zeit zu nehmen zwischen zwei Stellen im Code. Wie kann es sein, dass ich da unterschiedliche Ergebnisse bekomme?


Du erwartest nicht ernsthaft, dass Deine Methode jedesmal eine auf die Millisekunde gleiche Ausfuehrunszeit hat - oder? :D

Gruss, FFNB.
 

Ark

Top Contributor
Vielleicht liegt es an den Optimierungen am Code, die in der Zwischenzeit gemacht wurden? ;)

Zur Genauigkeit von [c]System.currentTimeMillis()[/c]: Diese Methode misst höchstens auf Millisekunde genau. Eigentlich zu logisch, wenn man sich die durchaus sinnige Bezeichnung mal durch den Kopf gehen lässt. :D Entsprechendes gilt für die Nanos.

Wichtig zu erwähnen wäre evtl. noch, dass die Genauigkeit je nach Betriebssystem stark abnehmen kann. Unter Windows XP konnte ich bestenfalls auf 10 ms genau messen. Auf derselben Maschine unter Linux aber stiegen die Werte, die [c]System.currentTimeMillis()[/c] lieferte, wie erwartet höchstens um 1.

(Ein Grund mehr, Windows nicht zu benutzen! :D)

Ark
 

Ähnliche Java Themen

Neue Themen


Oben