@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.
Constructor and Description |
---|
Stopwatch()
Deprecated.
Use
createUnstarted() instead. This
constructor is scheduled to be removed in Guava release 17.0. |
Stopwatch(Ticker ticker)
Deprecated.
Use
createUnstarted(Ticker) instead. This
constructor is scheduled to be removed in Guava release 17.0. |
Modifier and Type | Method and Description |
---|---|
static Stopwatch |
createStarted()
Creates (and starts) a new stopwatch using
System.nanoTime()
as its time source. |
static Stopwatch |
createStarted(Ticker 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.nanoTime()
as its time source. |
static Stopwatch |
createUnstarted(Ticker ticker)
Creates (but does not start) a new stopwatch, using the specified time
source.
|
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.
|
@Deprecated public Stopwatch()
createUnstarted()
instead. This
constructor is scheduled to be removed in Guava release 17.0.System.nanoTime()
as its time source.@Deprecated public Stopwatch(Ticker ticker)
createUnstarted(Ticker)
instead. This
constructor is scheduled to be removed in Guava release 17.0.public static Stopwatch createUnstarted()
System.nanoTime()
as its time source.public static Stopwatch createUnstarted(Ticker ticker)
public static Stopwatch createStarted()
System.nanoTime()
as its time source.public static Stopwatch createStarted(Ticker ticker)
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)
.Copyright © 2010-2013. All Rights Reserved.