Class Timer

java.lang.Object
schule.ngb.zm.util.Timer

public final class Timer extends Object
Hilfsklasse zur Zeitmessung im Nanosekundenbereich.

Mit einem Timer kann zum Beispiel die Laufzeit eines Algorithmus gemessen werden. Wie eine echte Stoppuhr läuft der Timer weiter, wenn nach einem stop() wieder start() aufgerufen wird. Soll die Zeitmessung wieder bei null beginnen, muss vorher reset() genutzt werden.

Die gemessene Zeit kann in Millisekunden oder Sekunden abgerufen werden. Wird eine noch größere Genauigkeit benötigt, können mit getTime(TimeUnit) beliebige Zeiteinheiten (zum Beispiel Nanosekunden) abgerufen werden.

Die Zeit kann auch bei laufender Uhr abgefragt werden. In dem Fall wird die bis zu diesem Zeitpunkt gemessene Zeit zurückgegeben.

  • Constructor Summary

    Constructors
    Constructor
    Description
    Erstellt einen neuen Timer mit Millisekunden als Basiseinheit.
    Timer(TimeUnit baseUnit)
    Erstellt einen Timer, der die angegebene Einheit als Basiseinheit für getTime() benutzt.
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    Gibt die gemessene Zeit in Millisekunden (gerundet) zurück.
    double
    Gibt die gemessene Zeit in Sekunden zurück.
    long
    Gibt die Zeit in der Basiseinheit zurück.
    long
    Gibt die Zeit in der angegebenen Einheit zurück.
    boolean
    Ob die Zeitmessung gerade läuft.
    Setzt den Timer auf den Startzustand und löscht alle bisher gemessenen Zeiten.
    Startet die Zeitmessung.
    Stoppt den Timer, wenn er derzeit läuft.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • Timer

      public Timer()
      Erstellt einen neuen Timer mit Millisekunden als Basiseinheit.
    • Timer

      public Timer(TimeUnit baseUnit)
      Erstellt einen Timer, der die angegebene Einheit als Basiseinheit für getTime() benutzt.

      Um eine Zeitmessung in Nanosekunden durchzuführen, kann der Timer beispielsweise so instanziiert werden:

      
       Timer clock = new Timer(TimeUnit.NANOSECONDS);
       
      Parameters:
      baseUnit - Die Basiseinheit für die Zeitmessung.
  • Method Details

    • isRunning

      public boolean isRunning()
      Ob die Zeitmessung gerade läuft.
      Returns:
      true, wenn die Zeitmessung mit start() gestartet wurde.
    • start

      public Timer start()
      Startet die Zeitmessung.

      Wenn zuvor schon eine Zeitmessung gestartet wurde, wird die neue Messung zur Summe aller Messungen hinzuaddiert. Soll die Messung bei null starten, muss vorher reset() verwendet werden:

      
       // Timer auf null stellen und sofort starten
       timer.reset().start();
       
      Returns:
      Dieser Timer selbst (method chaining).
    • stop

      public Timer stop()
      Stoppt den Timer, wenn er derzeit läuft. Die gemessene Dauer wird zur Summe aller gemessenen Zeiten hinzuaddiert.
      Returns:
      Dieser Timer selbst (method chaining).
    • reset

      public Timer reset()
      Setzt den Timer auf den Startzustand und löscht alle bisher gemessenen Zeiten. Falls die Zeitmessung gerade läuft, stoppt sie nicht, sondern startet vom Zeitpunkt des Aufrufs neu.
      Returns:
      Dieser Timer selbst (method chaining).
    • getTime

      public long getTime()
      Gibt die Zeit in der Basiseinheit zurück.
      Returns:
      Die bisher insgesamt gemessene Zeit.
    • getTime

      public long getTime(TimeUnit unit)
      Gibt die Zeit in der angegebenen Einheit zurück.

      Größere Zeiteinheiten werden gerundet und verlieren daher an Genauigkeit. Eine Zeitmessung von 999 Millisekunden wird als 0 Sekunden zurückgegeben.

      Um genauere Ergebnisse zu erhalten, kann mit getMillis() und getSeconds() die gemessene Zeit in Minuten beziehungsweise Sekunden als Kommazahl abgefragt werden.

      Parameters:
      unit - Zeiteinheit
      Returns:
      Die bisher insgesamt gemessene Zeit in der gewählten Zeiteinheit.
    • getMillis

      public int getMillis()
      Gibt die gemessene Zeit in Millisekunden (gerundet) zurück.
      Returns:
      Die gemessene Zeit in ms.
    • getSeconds

      public double getSeconds()
      Gibt die gemessene Zeit in Sekunden zurück.
      Returns:
      Die gemessene Zeit in s.