Fjord

18Apr/090

Laufzeitmessung in Java

Neues Semester neue Vorlesungen und neue Tätigkeiten am Rechner.

Vorlesung: Datenstrukturen -> neue Tätigkeit: Programmieren in Java

Alles soweit kein Problem. Habe mit Freude festgestellt, dass auf dem Mac schon alles drauf ist, was ich dafür brauche. Auch Classpath etc. war schon richtig gesetzt. Zwar spiele ich nun nicht mit der neusten Version, aber dass soll mir für das Erlernen struktureller Konzepte relativ egal sein.

In der letzten Vorlesung ging es um das Suchen von Elementen in einem Array. Vorgestellt wurden zwei Methoden, von denen eine angeblich schneller war. Um jetzt im Selbstversuch die Laufzeit zu messen hat unser Prof uns die Funktion getTime() aus der Klasse Date ans Herz gelegt. Wie das genau funktioniert sollen wir selbst herausfinden.

Mein Ansatz:


timePre = myDate.getTime();
// Hier arbeitete meine Suchfunktion
timePost = myDate.getTime();


System.out.println("\tDuration: " + (timePost - timePre) + "ms\n");

Ergebnis war immer eine Dauer von 0ms, da auch wenn ich mehrere Sekunden auf das Ergebnis meiner Suchfunktion warten musste getTime() immer die gleiche Zeit zurückgab.

Funktioniert hat dagegen der Weg über System.currentTimeMillis(). Gleiche vorgehensweise nur myDate.getTime() durch System.currentTimeMillis() ersetzt und schon klappt es auch mit der Laufzeitberechnung.


timePre = System.currentTimeMillis();
// Hier arbeitete meine Suchfunktion
timePost = System.currentTimeMillis()


System.out.println("\tDuration: " + (timePost - timePre) + "ms\n");

Falls der geneigte Leser eine Vorstellung hat, wieso getTime() jedesmal die gleiche Zeit ausspuckt, möge er diese in den Kommentaren hinterlassen ;-) Bis dahin höre ich nicht auf meinen Prof und berechne meine Laufzeiten über System.currentTimeMillis().

Kommentare (0) Trackbacks (0)

Zu diesem Artikel wurden noch keine Kommentare geschrieben.


Leave a comment

(required)

Noch keine Trackbacks.