Search code examples
javaperformancemeasurement

Stopwatch class for Java


Which Java class should you use for time performance measurements?

(One could use any date/time class, but the reason I'm asking is in .Net there's a designated Stopwatch class for this purpose)


Solution

  • The Spring Framework has an excellent StopWatch class:

    StopWatch stopWatch = new StopWatch("My Stop Watch");
    
    stopWatch.start("initializing");
    Thread.sleep(2000); // simulated work
    stopWatch.stop();
    
    stopWatch.start("processing");
    Thread.sleep(5000); // simulated work
    stopWatch.stop();
    
    stopWatch.start("finalizing");
    Thread.sleep(3000); // simulated work
    stopWatch.stop();
    
    System.out.println(stopWatch.prettyPrint());
    

    This produces:

        StopWatch 'My Stop Watch': running time (millis) = 10000
        -----------------------------------------
        ms     %     Task name
        -----------------------------------------
        02000  020%  initializing
        05000  050%  processing
        03000  030%  finalizing