@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 = new Stopwatch().start
(); doSomething(); stopwatch.stop
(); // optional long millis = stopwatch.elapsed(MILLISECONDS); 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.
Constructor and Description |
---|
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.
|
Modifier and Type | Method and Description |
---|---|
long |
elapsed(TimeUnit desiredUnit)
Returns the current elapsed time shown on this stopwatch, expressed
in the desired time unit, with any fraction rounded down.
|
long |
elapsedMillis()
Deprecated.
Use
stopwatch.elapsed(MILLISECONDS) instead. This
method is scheduled to be removed in Guava release 16.0. |
long |
elapsedTime(TimeUnit desiredUnit)
Deprecated.
Use
elapsed(TimeUnit) instead. This method is
scheduled to be removed in Guava release 16.0. |
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.
|
String |
toString(int significantDigits)
Deprecated.
Use
toString() instead. This method is scheduled
to be removed in Guava release 15.0. |
public Stopwatch()
System.nanoTime()
as its time source.public boolean isRunning()
public Stopwatch start()
Stopwatch
instanceIllegalStateException
- if the stopwatch is already running.public Stopwatch stop()
Stopwatch
instanceIllegalStateException
- if the stopwatch is already stopped.public Stopwatch reset()
Stopwatch
instancepublic long elapsed(TimeUnit desiredUnit)
Note that the overhead of measurement can be more than a microsecond, so
it is generally not useful to specify TimeUnit.NANOSECONDS
precision here.
elapsedTime()
)@Deprecated public long elapsedTime(TimeUnit desiredUnit)
elapsed(TimeUnit)
instead. This method is
scheduled to be removed in Guava release 16.0.Note that the overhead of measurement can be more than a microsecond, so
it is generally not useful to specify TimeUnit.NANOSECONDS
precision here.
@Deprecated public long elapsedMillis()
stopwatch.elapsed(MILLISECONDS)
instead. This
method is scheduled to be removed in Guava release 16.0.elapsed(TimeUnit.MILLISECONDS)
.@GwtIncompatible(value="String.format()") public String toString()
@Deprecated @GwtIncompatible(value="String.format()") public String toString(int significantDigits)
toString()
instead. This method is scheduled
to be removed in Guava release 15.0.elapsed(NANOSECONDS)
would
return {1234567}, toString(4)
returns "1.235 ms"
.Copyright © 2010-2013. All Rights Reserved.