com.google.common.base
Class Stopwatch

java.lang.Object
  extended by com.google.common.base.Stopwatch

@Beta
@GwtCompatible(emulated=true)
public final class Stopwatch
extends Object

An object that measures elapsed time in nanoseconds. It is useful to measure elapsed time using this class instead of direct calls to System.nanoTime() for a few reasons:

Basic usage:

   Stopwatch stopwatch = new Stopwatch().start();
   doSomething();
   stopwatch.stop(); // optional

   long millis = stopwatch.elapsedMillis();

   log.info("that took: " + stopwatch); // formatted string like "12.3 ms"
 

Stopwatch methods are not idempotent; it is an error to start or stop a stopwatch that is already in the desired state.

When testing code that uses this class, use the alternate constructor to supply a fake or mock ticker. This allows you to simulate any valid behavior of the stopwatch.

Note: This class is not thread-safe.

Since:
10.0
Author:
Kevin Bourrillion

Constructor Summary
Stopwatch()
          Creates (but does not start) a new stopwatch using System.nanoTime() as its time source.
Stopwatch(Ticker ticker)
          Creates (but does not start) a new stopwatch, using the specified time source.
 
Method Summary
 long elapsedMillis()
          Returns the current elapsed time shown on this stopwatch, expressed in milliseconds, with any fraction rounded down.
 long elapsedTime(TimeUnit desiredUnit)
          Returns the current elapsed time shown on this stopwatch, expressed in the desired time unit, with any fraction rounded down.
 boolean isRunning()
          Returns true if start() has been called on this stopwatch, and stop() has not been called since the last call to start().
 Stopwatch reset()
          Sets the elapsed time for this stopwatch to zero, and places it in a stopped state.
 Stopwatch start()
          Starts the stopwatch.
 Stopwatch stop()
          Stops the stopwatch.
 String toString()
          Returns a string representation of the current elapsed time; equivalent to toString(4) (four significant figures).
 String toString(int significantDigits)
          Returns a string representation of the current elapsed time, choosing an appropriate unit and using the specified number of significant figures.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Stopwatch

public Stopwatch()
Creates (but does not start) a new stopwatch using System.nanoTime() as its time source.


Stopwatch

public Stopwatch(Ticker ticker)
Creates (but does not start) a new stopwatch, using the specified time source.

Method Detail

isRunning

public boolean isRunning()
Returns true if start() has been called on this stopwatch, and stop() has not been called since the last call to start().


start

public Stopwatch start()
Starts the stopwatch.

Returns:
this Stopwatch instance
Throws:
IllegalStateException - if the stopwatch is already running.

stop

public Stopwatch stop()
Stops the stopwatch. Future reads will return the fixed duration that had elapsed up to this point.

Returns:
this Stopwatch instance
Throws:
IllegalStateException - if the stopwatch is already stopped.

reset

public Stopwatch reset()
Sets the elapsed time for this stopwatch to zero, and places it in a stopped state.

Returns:
this Stopwatch instance

elapsedTime

public long elapsedTime(TimeUnit desiredUnit)
Returns the current elapsed time shown on this stopwatch, expressed in the desired time unit, with any fraction rounded down.

Note that the overhead of measurement can be more than a microsecond, so it is generally not useful to specify TimeUnit.NANOSECONDS precision here.


elapsedMillis

public long elapsedMillis()
Returns the current elapsed time shown on this stopwatch, expressed in milliseconds, with any fraction rounded down. This is identical to elapsedTime(TimeUnit.MILLISECONDS.


toString

@GwtIncompatible(value="String.format()")
public String toString()
Returns a string representation of the current elapsed time; equivalent to toString(4) (four significant figures).

Overrides:
toString in class Object

toString

@GwtIncompatible(value="String.format()")
public String toString(int significantDigits)
Returns a string representation of the current elapsed time, choosing an appropriate unit and using the specified number of significant figures. For example, at the instant when elapsedTime(NANOSECONDS) would return {1234567}, toString(4) returns "1.235 ms".



Copyright © 2010-2012. All Rights Reserved.