Class StopWatch


  • public class StopWatch
    extends java.lang.Object

    StopWatch provides a simple way to measure execution time for tasks, supporting nested task tracking. Each task can be started with optional reentrancy control via start(String, boolean).

    By default, tasks are non-reentrant. Attempting to start a non-reentrant task while it's already running will throw an IllegalStateException. If reentrancy is enabled, subsequent calls to start the same task will be ignored until it is stopped.

    Example Usage

    
     // Basic usage
     StopWatch stopWatch = new StopWatch("MyStopWatch");
     stopWatch.start("Task 1");
     // perform operations
     stopWatch.stop();
     System.out.println(stopWatch);  // Outputs: StopWatch[id='MyStopWatch', running tasks=[], completed tasks=[Task[name='Task 1', elapsed(ns)=...]], totalTime(ns)=...]
    
     // Nested tasks
     stopWatch.start("Task A");
     // do something
     stopWatch.start("Task B");
     // do something else
     stopWatch.stop();  // stops Task B
     stopWatch.stop();  // stops Task A
    
     // Reentrant task example
     stopWatch.start("Reentrant Task", true);
     // do something
     stopWatch.start("Reentrant Task", true);  // this call is ignored
     // ...
     stopWatch.stop();  // ends the original task
     

    Note: This class is not thread-safe and should only be used within a single thread.

    Since:
    1.0.0
    Author:
    Mercy
    • Constructor Detail

      • StopWatch

        public StopWatch​(java.lang.String id)
    • Method Detail

      • start

        public void start​(java.lang.String taskName)
                   throws java.lang.IllegalArgumentException,
                          java.lang.IllegalStateException
        Throws:
        java.lang.IllegalArgumentException
        java.lang.IllegalStateException
      • start

        public void start​(java.lang.String taskName,
                          boolean reentrant)
                   throws java.lang.IllegalArgumentException,
                          java.lang.IllegalStateException
        Throws:
        java.lang.IllegalArgumentException
        java.lang.IllegalStateException
      • stop

        public void stop()
                  throws java.lang.IllegalStateException
        Throws:
        java.lang.IllegalStateException
      • getCurrentTask

        protected StopWatch.Task getCurrentTask​(boolean removed)
      • getId

        public java.lang.String getId()
      • getRunningTasks

        public java.util.List<StopWatch.Task> getRunningTasks()
      • getCompletedTasks

        public java.util.List<StopWatch.Task> getCompletedTasks()
      • getTotalTimeNanos

        public long getTotalTimeNanos()
      • getTotalTime

        public long getTotalTime​(java.util.concurrent.TimeUnit timeUnit)
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object