## org.springframework.util
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.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.

Constructor Summary
`StopWatch()` Construct a new stop watch.
`StopWatch(String id)` Construct a new stop watch with the given id.

Method Summary
`StopWatch.TaskInfo` `getLastTaskInfo()` Return the last task as a TaskInfo object.
`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.
`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.
`String` `shortSummary()` Return a short description of the total running time.
`void` `start()` Start an unnamed task.
`void` `start(String taskName)` Start a named task.
`void` `stop()` Stop the current task.
`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`

Constructor Detail

### StopWatch

    public StopWatch()

  Construct a new stop watch. Does not start any task.

### StopWatch

    public StopWatch(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 IllegalStateException

  Start an unnamed task. The results are undefined if `stop()` or timing methods are called without invoking this method.

  Throws:
    `IllegalStateException`
  See Also:
    `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.

  Parameters:
    `taskName` - the name of the task to start
  Throws:
    `IllegalStateException`
  See Also:
    `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 `start()` / `stop()` methods.

  Throws:
    `IllegalStateException`
  See Also:
    `start()`

### isRunning

    public boolean isRunning()

  Return whether the stop watch is currently running.

### getLastTaskTimeMillis

    public long getLastTaskTimeMillis()
                               throws IllegalStateException

  Return the time taken by the last task.

  Throws:
    `IllegalStateException`

### getLastTaskName

    public String getLastTaskName()
                           throws IllegalStateException

  Return the name of the last task.

  Throws:
    `IllegalStateException`

### getLastTaskInfo

    public StopWatch.TaskInfo getLastTaskInfo()
                                       throws IllegalStateException

  Return the last task as a TaskInfo object.

  Throws:
    `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 String shortSummary()

  Return a short description of the total running time.

### prettyPrint

    public 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 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 `Object`