Class StopWatch
Conceals use of System.nanoTime(), improving the readability of
 application code and reducing the likelihood of calculation errors.
 
Note that this object is not designed to be thread-safe and does not use synchronization.
This class is normally used to verify performance during proof-of-concept work and in development, rather than as part of production applications.
As of Spring Framework 5.2, running time is tracked and reported in
 nanoseconds. As of 6.1, the default time unit for String renderings is
 seconds with decimal points in nanosecond precision. Custom renderings with
 specific time units can be requested through prettyPrint(TimeUnit).
- Since:
- May 2, 2001
- Author:
- Rod Johnson, Juergen Hoeller, Sam Brannen
- See Also:
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionstatic final classNested class to hold data about one task executed within theStopWatch.
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionGet the name of the currently running task, if any.getId()Get the id of thisStopWatch, as specified on construction.Deprecated.Deprecated.as of 6.1, in favor oflastTaskInfo()longDeprecated.as of 6.1, in favor oflastTaskInfo()longDeprecated.as of 6.1, in favor oflastTaskInfo()intGet the number of tasks timed.Get an array of the data for tasks performed.doublegetTotalTime(TimeUnit timeUnit) Get the total time for all tasks in the requested time unit (with decimal points in nanosecond precision).longGet the total time for all tasks in milliseconds.longGet the total time for all tasks in nanoseconds.doubleGet the total time for all tasks in seconds.booleanDetermine whether thisStopWatchis currently running.Get the last task as aStopWatch.TaskInfoobject.Generate a table describing all tasks performed in seconds (with decimal points in nanosecond precision).prettyPrint(TimeUnit timeUnit) Generate a table describing all tasks performed in the requested time unit (with decimal points in nanosecond precision).voidsetKeepTaskList(boolean keepTaskList) Configure whether theStopWatch.TaskInfoarray is built over time.Get a short description of the total running time in seconds.voidstart()Start an unnamed task.voidStart a named task.voidstop()Stop the current task.toString()Generate an informative string describing all tasks performed in seconds.
- 
Constructor Details- 
StopWatchpublic StopWatch()Construct a newStopWatch.Does not start any task. 
- 
StopWatchConstruct a newStopWatchwith the given id.The id is handy when we have output from multiple stop watches and need to distinguish between them. Does not start any task. - Parameters:
- id- identifier for this stop watch
 
 
- 
- 
Method Details- 
getIdGet the id of thisStopWatch, as specified on construction.- Returns:
- the id (empty String by default)
- Since:
- 4.2.2
- See Also:
 
- 
setKeepTaskListpublic void setKeepTaskList(boolean keepTaskList) Configure whether theStopWatch.TaskInfoarray is built over time.Set this to falsewhen using aStopWatchfor millions of tasks; otherwise, theTaskInfostructure will consume excessive memory.Default is true.
- 
startStart an unnamed task.The results are undefined if stop()or timing methods are called without invoking this method first.- Throws:
- IllegalStateException
- See Also:
 
- 
startStart a named task.The results are undefined if stop()or timing methods are called without invoking this method first.- Parameters:
- taskName- the name of the task to start
- Throws:
- IllegalStateException
- See Also:
 
- 
stopStop the current task.The results are undefined if timing methods are called without invoking at least one pair of start()/stop()methods.- Throws:
- IllegalStateException
- See Also:
 
- 
isRunningpublic boolean isRunning()Determine whether thisStopWatchis currently running.- See Also:
 
- 
currentTaskNameGet the name of the currently running task, if any.- Since:
- 4.2.2
- See Also:
 
- 
lastTaskInfoGet the last task as aStopWatch.TaskInfoobject.- Throws:
- IllegalStateException- if no tasks have run yet
- Since:
- 6.1
 
- 
getLastTaskInfoDeprecated.as of 6.1, in favor oflastTaskInfo()Get the last task as aStopWatch.TaskInfoobject.- Throws:
- IllegalStateException
 
- 
getLastTaskNameDeprecated.as of 6.1, in favor oflastTaskInfo()Get the name of the last task.- Throws:
- IllegalStateException
- See Also:
 
- 
getLastTaskTimeNanosDeprecated.as of 6.1, in favor oflastTaskInfo()Get the time taken by the last task in nanoseconds.- Throws:
- IllegalStateException
- Since:
- 5.2
- See Also:
 
- 
getLastTaskTimeMillisDeprecated.as of 6.1, in favor oflastTaskInfo()Get the time taken by the last task in milliseconds.- Throws:
- IllegalStateException
- See Also:
 
- 
getTaskInfoGet an array of the data for tasks performed.- See Also:
 
- 
getTaskCountpublic int getTaskCount()Get the number of tasks timed.
- 
getTotalTimeNanospublic long getTotalTimeNanos()Get the total time for all tasks in nanoseconds.- Since:
- 5.2
- See Also:
 
- 
getTotalTimeMillispublic long getTotalTimeMillis()Get the total time for all tasks in milliseconds.- See Also:
 
- 
getTotalTimeSecondspublic double getTotalTimeSeconds()Get the total time for all tasks in seconds.- See Also:
 
- 
getTotalTimeGet the total time for all tasks in the requested time unit (with decimal points in nanosecond precision).- Parameters:
- timeUnit- the unit to use
- Since:
- 6.1
- See Also:
 
- 
prettyPrintGenerate a table describing all tasks performed in seconds (with decimal points in nanosecond precision).For custom reporting, call getTaskInfo()and use the data directly.
- 
prettyPrintGenerate a table describing all tasks performed in the requested time unit (with decimal points in nanosecond precision).For custom reporting, call getTaskInfo()and use the data directly.- Parameters:
- timeUnit- the unit to use for rendering total time and task time
- Since:
- 6.1
- See Also:
 
- 
shortSummaryGet a short description of the total running time in seconds.- See Also:
 
- 
toStringGenerate an informative string describing all tasks performed in seconds.
 
- 
lastTaskInfo()