Class 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.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-concepts and in development, rather than as part of production applications.

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  StopWatch.TaskInfo
      Inner class to hold data about one task executed within the stop watch.
    • Constructor Summary

      Constructors 
      Constructor Description
      StopWatch()
      Construct a new stop watch.
      StopWatch​(java.lang.String id)
      Construct a new stop watch with the given id.
    • Method Summary

      Modifier and Type Method Description
      boolean isRunning()
      Return whether the stop watch is currently running.
      StopWatch keepTaskList​(boolean keepTaskList)
      Determine whether the TaskInfo array is built over time.
      java.lang.String lastTaskName()
      Return the name of the last task.
      TimeValue lastTaskTime()
      Return the time taken by the last task.
      java.lang.String prettyPrint()
      Return a string with a table describing all tasks performed.
      java.lang.String shortSummary()
      Return a short description of the total running time.
      StopWatch start()
      Start an unnamed task.
      StopWatch start​(java.lang.String taskName)
      Start a named task.
      StopWatch stop()
      Stop the current task.
      int taskCount()
      Return the number of tasks timed.
      StopWatch.TaskInfo[] taskInfo()
      Return an array of the data for tasks performed.
      java.lang.String toString()
      Return an informative string describing all tasks performed For custom reporting, call getTaskInfo() and use the task info directly.
      TimeValue totalTime()
      Return the total time for all tasks.
      • 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​(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

      • keepTaskList

        public StopWatch keepTaskList​(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 StopWatch 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 StopWatch 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 StopWatch 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.
      • lastTaskTime

        public TimeValue lastTaskTime()
                               throws java.lang.IllegalStateException
        Return the time taken by the last task.
        Throws:
        java.lang.IllegalStateException
      • lastTaskName

        public java.lang.String lastTaskName()
                                      throws java.lang.IllegalStateException
        Return the name of the last task.
        Throws:
        java.lang.IllegalStateException
      • totalTime

        public TimeValue totalTime()
        Return the total time for all tasks.
      • taskCount

        public int taskCount()
        Return the number of tasks timed.
      • taskInfo

        public StopWatch.TaskInfo[] taskInfo()
        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