Was sind Laufzeiten? Wie kann ich Laufzeiten bestimmen?

Mit Laufzeit bezeichnet man die Zeit, die ein Programm oder eine bestimmte Sequenz in ein einem Programm zur Ausführung benötigt.

In Java kann man zur Messung der Laufzeit System.nanoTime() verwenden. Im folgenden Beispiel wird die Laufzeit der Methode test() gemessen. Diese Methode berechnet die Summe der ersten n aufeinanderfolgenden natürlichen Zahlen (kleiner Gauß).

Java:

static long test(int n) {
    long sum = 0;
    for (int i = 0; i <= n; i++) {
        sum += i;
    }
    return sum;
}

public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
        long t1 = System.nanoTime();
        test(1000000);
        long t2 = System.nanoTime();
        long dt = t2 - t1;
        System.out.println(dt + " ns");
    }
}

Die Ausgabe des Programms zeigt die Zeitmessung in Nanosekunden für n=1 000 000 mit zehn aufeinanderfolgenden Versuchen.

6968700 ns
2738800 ns
424800 ns
427600 ns
474600 ns
426300 ns
412500 ns
412200 ns
354900 ns
352700 ns

Da die virtuelle Maschine während der Laufzeit Optimierungen vornimmt, nimmt bei mehreren Durchläufen die Ausführungszeit ab.

Zeitmessungen werden oft verwendet, um die Effizienz von Algorithmen zu vergleichen. Man muss dabei beachten, dass auf einem Multitasking-Betriebssystem die Ressourcen wie Speicher oder CPU von verschiedenen Prozessen genutzt werden. Die Laufzeit eines Programms kann in Abhängigkeit der Auslastung der Ressourcen variieren.