Class Stopwatch
java.lang.Object
org.glassfish.jersey.internal.guava.Stopwatch
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:
- 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 bynanoTime
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.
- Since:
- 10.0
- Author:
- Kevin Bourrillion
-
Method Summary
Modifier and TypeMethodDescriptionstatic Stopwatch
Creates (but does not start) a new stopwatch usingSystem.nanoTime()
as its time source.start()
Starts the stopwatch.toString()
Returns a string representation of the current elapsed time.
-
Method Details
-
createUnstarted
Creates (but does not start) a new stopwatch usingSystem.nanoTime()
as its time source.- Since:
- 15.0
-
start
Starts the stopwatch.- Returns:
- this
Stopwatch
instance - Throws:
IllegalStateException
- if the stopwatch is already running.
-
toString
Returns a string representation of the current elapsed time.
-