@Beta @GwtCompatible(emulated=true) public final class Stopwatch extends Object
System.nanoTime() for a few reasons:
nanoTime, the value returned has no absolute meaning, and can only be interpreted as relative to another timestamp returned by nanoTime at a different time. Stopwatch is a more effective abstraction because it exposes only these relative values, not the absolute ones. Basic usage:
Stopwatch stopwatch = Stopwatch.createStarted(); doSomething(); stopwatch.stop(); // optional long millis = stopwatch.elapsed(MILLISECONDS); log.info("time: " + 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 createUnstarted(Ticker) or createStarted(Ticker) 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.
| Modifier and Type | Method and Description |
|---|---|
static Stopwatch |
createStarted()
Creates (and starts) a new stopwatch using
System as its time source.
|
static Stopwatch |
createStarted(Ticker
Creates (and starts) a new stopwatch, using the specified time source.
|
static Stopwatch |
createUnstarted()
Creates (but does not start) a new stopwatch using
System as its time source.
|
static Stopwatch |
createUnstarted(Ticker
Creates (but does not start) a new stopwatch, using the specified time source.
|
long |
elapsed(TimeUnit
Returns the current elapsed time shown on this stopwatch, expressed in the desired time unit, with any fraction rounded down.
|
boolean |
isRunning()
|
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.
|
public static StopwatchcreateUnstarted()
System.nanoTime() as its time source.
public static StopwatchcreateUnstarted(Ticker ticker)
public static StopwatchcreateStarted()
System.nanoTime() as its time source.
public static StopwatchcreateStarted(Ticker ticker)
public boolean isRunning()
public Stopwatchstart()
Stopwatch instance
IllegalStateException - if the stopwatch is already running.
public Stopwatchstop()
Stopwatch instance
IllegalStateException - if the stopwatch is already stopped.
public Stopwatchreset()
Stopwatch instance
public long elapsed(TimeUnitdesiredUnit)
Note that the overhead of measurement can be more than a microsecond, so it is generally not useful to specify TimeUnit precision here.
elapsedTime())
@GwtIncompatible(value="String.format()") public StringtoString()