Wie kann man die Geschwindigkeit eines Programmteils messen?
Im Beispiel-Quelltext wird vor Beginn eines Schleifendurchlaufes
von 0 - 1.000.000 die momentane Systemzeit in der Variablen timeStart
gespeichert. Dies geschieht durch die Methode System.currentTimeMillis()
.
package grundlagen;
public class TempoClass {
public static void main(String[] args) {
final long timeStart = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
// nichts machen
}
final long timeEnd = System.currentTimeMillis();
System.out.println("Verlaufszeit der Schleife: " + (timeEnd - timeStart) + " Millisek.");
}
}
Nach Durchlauf der Schleife wird der momentane Zeitpunkt
wiederum in einer Variablen timeEnd
auf gleiche Art
gespeichert. Die Differenz beider Werte gibt die Zeit in
Millisekunden für den Schleifendurchlauf als long aus.
Ab der JDK-Version 1.5 stellt die Klasse System die Methode nanoTime() bereit, die die Systemzeit in Nanosekunden vom genauesten zur Verfügung stehenden System-Zeitgeber zurück gibt. Dieser ermittelt die Zeit jedoch nicht unbedingt mit Bezug auf den 1.1.1970 00:00 Uhr, wie dies System.currentTimeMillis() tut.
package grundlagen;
public class TempoClass2 {
public static void main(String[] args) {
final long timeStart = System.nanoTime();
for (int i = 0; i < 1000000; i++) {
// nichts machen
}
final long timeEnd = System.nanoTime();
System.out.println("Verlaufszeit der Schleife: " + (timeEnd - timeStart) + " Nanosek.");
}
}
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.