org.springframework.util
Class StopWatch

java.lang.Object
  extended by org.springframework.util.StopWatch

public class StopWatch
extends java.lang.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.currentTimeMillis(), 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-concepts and in development, rather than as part of production applications.

Since:
May 2, 2001
Author:
Rod Johnson, Juergen Hoeller, Sam Brannen

Nested Class Summary
static class StopWatch.TaskInfo
          Inner class to hold data about one task executed within the stop watch.
 
Field Summary
private  java.lang.String currentTaskName
          Name of the current task
private  java.lang.String id
          Identifier of this stop watch.
private  boolean keepTaskList
           
private  StopWatch.TaskInfo lastTaskInfo
           
private  boolean running
          Is the stop watch currently running?
private  long startTimeMillis
          Start time of the current task
private  int taskCount
           
private  java.util.List<StopWatch.TaskInfo> taskList
           
private  long totalTimeMillis
          Total running time
 
Constructor Summary
StopWatch()
          Construct a new stop watch.
StopWatch(java.lang.String id)
          Construct a new stop watch with the given id.
 
Method Summary
 StopWatch.TaskInfo getLastTaskInfo()
          Return the last task as a TaskInfo object.
 java.lang.String getLastTaskName()
          Return the name of the last task.
 long getLastTaskTimeMillis()
          Return the time taken by the last task.
 int getTaskCount()
          Return the number of tasks timed.
 StopWatch.TaskInfo[] getTaskInfo()
          Return an array of the data for tasks performed.
 long getTotalTimeMillis()
          Return the total time in milliseconds for all tasks.
 double getTotalTimeSeconds()
          Return the total time in seconds for all tasks.
 boolean isRunning()
          Return whether the stop watch is currently running.
 java.lang.String prettyPrint()
          Return a string with a table describing all tasks performed.
 void setKeepTaskList(boolean keepTaskList)
          Determine whether the TaskInfo array is built over time.
 java.lang.String shortSummary()
          Return a short description of the total running time.
 void start()
          Start an unnamed task.
 void start(java.lang.String taskName)
          Start a named task.
 void stop()
          Stop the current task.
 java.lang.String toString()
          Return an informative string describing all tasks performed For custom reporting, call getTaskInfo() and use the task info directly.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

id

private final java.lang.String id
Identifier of this stop watch. Handy when we have output from multiple stop watches and need to distinguish between them in log or console output.


keepTaskList

private boolean keepTaskList

taskList

private final java.util.List<StopWatch.TaskInfo> taskList

startTimeMillis

private long startTimeMillis
Start time of the current task


running

private boolean running
Is the stop watch currently running?


currentTaskName

private java.lang.String currentTaskName
Name of the current task


lastTaskInfo

private StopWatch.TaskInfo lastTaskInfo

taskCount

private int taskCount

totalTimeMillis

private long totalTimeMillis
Total running time

Constructor Detail

StopWatch

public StopWatch()
Construct a new stop watch. Does not start any task.


StopWatch

public StopWatch(java.lang.String id)
Construct a new stop watch with the given id. Does not start any task.

Parameters:
id - identifier for this stop watch. Handy when we have output from multiple stop watches and need to distinguish between them.
Method Detail

setKeepTaskList

public void setKeepTaskList(boolean keepTaskList)
Determine whether the TaskInfo array is built over time. Set this to "false" when using a StopWatch for millions of intervals, or the task info structure will consume excessive memory. Default is "true".


start

public void start()
           throws java.lang.IllegalStateException
Start an unnamed task. The results are undefined if stop() or timing methods are called without invoking this method.

Throws:
java.lang.IllegalStateException
See Also:
stop()

start

public void start(java.lang.String taskName)
           throws java.lang.IllegalStateException
Start a named task. The results are undefined if stop() or timing methods are called without invoking this method.

Parameters:
taskName - the name of the task to start
Throws:
java.lang.IllegalStateException
See Also:
stop()

stop

public void stop()
          throws java.lang.IllegalStateException
Stop the current task. The results are undefined if timing methods are called without invoking at least one pair start() / stop() methods.

Throws:
java.lang.IllegalStateException
See Also:
start()

isRunning

public boolean isRunning()
Return whether the stop watch is currently running.


getLastTaskTimeMillis

public long getLastTaskTimeMillis()
                           throws java.lang.IllegalStateException
Return the time taken by the last task.

Throws:
java.lang.IllegalStateException

getLastTaskName

public java.lang.String getLastTaskName()
                                 throws java.lang.IllegalStateException
Return the name of the last task.

Throws:
java.lang.IllegalStateException

getLastTaskInfo

public StopWatch.TaskInfo getLastTaskInfo()
                                   throws java.lang.IllegalStateException
Return the last task as a TaskInfo object.

Throws:
java.lang.IllegalStateException

getTotalTimeMillis

public long getTotalTimeMillis()
Return the total time in milliseconds for all tasks.


getTotalTimeSeconds

public double getTotalTimeSeconds()
Return the total time in seconds for all tasks.


getTaskCount

public int getTaskCount()
Return the number of tasks timed.


getTaskInfo

public StopWatch.TaskInfo[] getTaskInfo()
Return an array of the data for tasks performed.


shortSummary

public java.lang.String shortSummary()
Return a short description of the total running time.


prettyPrint

public java.lang.String prettyPrint()
Return a string with a table describing all tasks performed. For custom reporting, call getTaskInfo() and use the task info directly.


toString

public java.lang.String toString()
Return an informative string describing all tasks performed For custom reporting, call getTaskInfo() and use the task info directly.

Overrides:
toString in class java.lang.Object