- All Implemented Interfaces:
Serializable
System.nanoTime() for a few reasons:
- An alternate time source can be substituted, for testing or performance reasons.
- As documented by
nanoTime, the value returned has no absolute meaning, and can only be interpreted as relative to another timestamp returned bynanoTimeat a different time.StopWatchis 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
Duration duration = stopwatch.elapsed();
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.
- Author:
- com.google.common.base.Stopwatch
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionstatic StopWatchstatic StopWatchcreateStarted(Ticker ticker) static StopWatchstatic StopWatchcreateUnstarted(Ticker ticker) elapsed()longbooleanreset()Sets the elapsed time for this stopwatch to zero, and places it in a stopped state.start()Starts the stopwatch.stop()Stops the stopwatch.toString()Returns a string representation of the current elapsed time.
-
Method Details
-
createUnstarted
- Returns:
- a created (but not started) new stopwatch using
System.nanoTime()as its time source.
-
createUnstarted
- Parameters:
ticker- specified time source, must not be null- Returns:
- a created (but not started) new stopwatch, using the specified time source.
-
createStarted
- Returns:
- a created (and started) new stopwatch using
System.nanoTime()as its time source.
-
createStarted
- Parameters:
ticker- specified time source, must not be null- Returns:
- a created (and started) new stopwatch, using the specified time source.
-
isRunning
-
start
Starts the stopwatch.- Returns:
- this
StopWatchinstance - Throws:
IllegalStateException- if the stopwatch is already running.
-
stop
Stops the stopwatch. Future reads will return the fixed duration that had elapsed up to this point.- Returns:
- this
StopWatchinstance - Throws:
IllegalStateException- if the stopwatch is already stopped.
-
reset
Sets the elapsed time for this stopwatch to zero, and places it in a stopped state.- Returns:
- this
StopWatchinstance
-
elapsed
- Parameters:
desiredUnit- must not be null- Returns:
- the current elapsed time shown on this stopwatch, expressed in the
desired time unit, with any fraction rounded down.
Note: the overhead of measurement can be more than a microsecond, so it is generally not useful to specify
TimeUnit.NANOSECONDSprecision here.It is generally not a good idea to use an ambiguous, unitless
longto represent elapsed time. Therefore, we recommend usingelapsed()instead, which returns a strongly-typedDurationinstance.
-
elapsed
- Returns:
- the current elapsed time shown on this stopwatch as a
Duration. Unlikeelapsed(TimeUnit), this method does not lose any precision due to rounding.
-
toString
Returns a string representation of the current elapsed time.
-