Wie kann man die Geschwindigkeit eines Programmteils messen?

Die Ermittlung der momentanen Systemzeit ermöglicht es, Zeitmessungen durchzuführen.

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.");
    }
}