Class StopWatch
- java.lang.Object
- org.springframework.util.StopWatch
public class StopWatch extends Object
Simple stop watch, allowing for timing of a number of tasks, exposing total running time and running time for each named task.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.
- Since:
- May 2, 2001
- Author:
- Rod Johnson, Juergen Hoeller, Sam Brannen
Nested Class Summary
Nested Classes Modifier and Type Class Description static classStopWatch.TaskInfoNested class to hold data about one task executed within theStopWatch.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description StringcurrentTaskName()Get the name of the currently running task, if any.StringgetId()Get the ID of thisStopWatch, as specified on construction.StopWatch.TaskInfogetLastTaskInfo()Get the last task as aStopWatch.TaskInfoobject.StringgetLastTaskName()Get the name of the last task.longgetLastTaskTimeMillis()Get the time taken by the last task in milliseconds.longgetLastTaskTimeNanos()Get the time taken by the last task in nanoseconds.intgetTaskCount()Get the number of tasks timed.StopWatch.TaskInfo[]getTaskInfo()Get an array of the data for tasks performed.longgetTotalTimeMillis()Get the total time in milliseconds for all tasks.longgetTotalTimeNanos()Get the total time in nanoseconds for all tasks.doublegetTotalTimeSeconds()Get the total time in seconds for all tasks.booleanisRunning()Determine whether thisStopWatchis currently running.StringprettyPrint()Generate a string with a table describing all tasks performed.voidsetKeepTaskList(boolean keepTaskList)Configure whether theStopWatch.TaskInfoarray is built over time.StringshortSummary()Get a short description of the total running time.voidstart()Start an unnamed task.voidstart(String taskName)Start a named task.voidstop()Stop the current task.StringtoString()Generate an informative string describing all tasks performed
Constructor Detail
StopWatch
public StopWatch()
Construct a newStopWatch.Does not start any task.
Method Detail
getId
public String getId()
Get the ID of thisStopWatch, as specified on construction.- Returns:
- the ID (empty String by default)
- Since:
- 4.2.2
- See Also:
StopWatch(String)
setKeepTaskList
public void setKeepTaskList(boolean keepTaskList)
Configure whether theStopWatch.TaskInfoarray is built over time.Set this to
falsewhen using aStopWatchfor millions of intervals; otherwise, theTaskInfostructure will consume excessive memory.Default is
true.
start
public void start() throws IllegalStateException
Start an unnamed task.The results are undefined if
stop()or timing methods are called without invoking this method first.- Throws:
IllegalStateException- See Also:
start(String),stop()
start
public void start(String taskName) throws IllegalStateException
Start 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:
start(),stop()
stop
public void stop() throws IllegalStateException
Stop 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:
start(),start(String)
isRunning
public boolean isRunning()
Determine whether thisStopWatchis currently running.- See Also:
currentTaskName()
currentTaskName
@Nullable public String currentTaskName()
Get the name of the currently running task, if any.- Since:
- 4.2.2
- See Also:
isRunning()
getLastTaskTimeNanos
public long getLastTaskTimeNanos() throws IllegalStateException
Get the time taken by the last task in nanoseconds.- Throws:
IllegalStateException- Since:
- 5.2
- See Also:
getLastTaskTimeMillis()
getLastTaskTimeMillis
public long getLastTaskTimeMillis() throws IllegalStateException
Get the time taken by the last task in milliseconds.- Throws:
IllegalStateException- See Also:
getLastTaskTimeNanos()
getLastTaskName
public String getLastTaskName() throws IllegalStateException
Get the name of the last task.- Throws:
IllegalStateException
getLastTaskInfo
public StopWatch.TaskInfo getLastTaskInfo() throws IllegalStateException
Get the last task as aStopWatch.TaskInfoobject.- Throws:
IllegalStateException
getTotalTimeNanos
public long getTotalTimeNanos()
Get the total time in nanoseconds for all tasks.- Since:
- 5.2
- See Also:
getTotalTimeMillis(),getTotalTimeSeconds()
getTotalTimeMillis
public long getTotalTimeMillis()
Get the total time in milliseconds for all tasks.- See Also:
getTotalTimeNanos(),getTotalTimeSeconds()
getTotalTimeSeconds
public double getTotalTimeSeconds()
Get the total time in seconds for all tasks.- See Also:
getTotalTimeNanos(),getTotalTimeMillis()
getTaskCount
public int getTaskCount()
Get the number of tasks timed.
getTaskInfo
public StopWatch.TaskInfo[] getTaskInfo()
Get an array of the data for tasks performed.
shortSummary
public String shortSummary()
Get a short description of the total running time.
prettyPrint
public String prettyPrint()
Generate a string with a table describing all tasks performed.For custom reporting, call
getTaskInfo()and use the task info directly.
toString
public String toString()
Generate an informative string describing all tasks performedFor custom reporting, call
getTaskInfo()and use the task info directly.