Helmichs Informatik-Lexikon

Systemzeit ermitteln

Das Ermitteln der Systemzeit ist sehr hilfreich, wenn man beispielsweise messen will, wie lange der Bubblesort oder ein anderer Sortieralgorithmus braucht, um 1000 oder 5000 Zahlen zu sortieren. Bei so kleinen Zahlenmengen kommt man mit einer Stoppuhr nicht sehr weit, weil die Rechner heute viel zu schnell dafür sind.

Der folgende Quelltext zeigt an einem Beispiel, wie man mithilfe der Systemzeit einen Sortieralgorithmus analysieren kann:

import java.util.*;

public long analyse()
{
   erzeugen();

   Date dStart = new Date();       
   long start = dStart.getTime();
   
   bubblesort();
   
   Date dStop = new Date();              
   long stop = dStop.getTime();
   
   long diff = stop - start;
   
   System.out.println(MAX + " Zahlen sortiert nach " + diff + " ms");
   return diff;
}

Zunächst wird der Array erzeugt, die Zahlen sind unsortiert.

Dann wird ein Objekt dStart der Klasse Date initialisiert, so dass man auf die Methoden dieser Klasse zugreifen kann.

Als Nächstes wird eine Variable start für die Startzeit des Sortierens initialisiert. In diese Variable (eine einfache int-Variable reicht leider nicht aus, es muss schon eine longint-Variable sein) wird dann die aktuelle Systemzeit hineingeschrieben. Wie kommt man an die aktuelle Systemzeit heran? Durch Aufruf der Methode getTime der Klasse Date.

Nachdem jetzt die Systemzeit gesichert ist, kann der Sortieralgorithmus aufgerufen werden.

Danach ermittelt man die Systemzeit erneut, speichert diese aber in einer anderen Variablen. In unserem Beispiel heißt diese Variable sinnvollerweise stop. Leider funktioniert das nur, wenn zuvor ein neues Objekt der Klasse Date erzeugt wurde. Interessanterweise wird die Systemzeit nämlich nicht dann ermittelt, wenn getTime aufgerufen wird, sondern bereits dann, wenn das Date-Objekt erzeugt wird. Verwendet man in dem Quelltext nur ein einziges Date-Objekt, wird auch nur einmal die Systemzeit ermittelt.

Wenn man nun wissen will, wie viele Millisekunden der Algorithmus benötigt hat, muss man einfach die Differenz aus start und stop ermitteln, und schon hat man das Ergebnis.