Java-打印代码耗时StopWatch

84 阅读1分钟

在开发中,经常要查看代码执行的效率,比较直观的方法是打印各个方法所执行的时间,通常会采用下面的方法:

System.currentTimeMillis()方法

@Test
public void printSystemTime() throws InterruptedException {
    long startTime = System.currentTimeMillis();
    Thread.sleep(500);
    long endTime = System.currentTimeMillis();
    System.out.println(("方法耗时为=" + (endTime - startTime)));
}

org.springframework.util.StopWatch

@Test
public void stopWatch() throws InterruptedException {
    StopWatch stopwatch = new StopWatch();
    stopwatch.start();
    Thread.sleep(500);
    stopwatch.stop();
    System.out.println("方法耗时为(返回毫秒)=" +stopwatch.getLastTaskTimeMillis());
}

>方法耗时为(返回毫秒)=502

/**
 * 优雅格式打出所有任务的耗时以及占比
 * @throws InterruptedException
 */
@Test
public void stopWatch2() throws InterruptedException {
    StopWatch stopwatch = new StopWatch();
    stopwatch.start("第一个");
    Thread.sleep(500);
    stopwatch.stop();

    stopwatch.start("第二个");
    Thread.sleep(400);
    stopwatch.stop();

    stopwatch.start("第三个");
    Thread.sleep(300);
    stopwatch.stop();

    System.out.println(stopwatch.prettyPrint());

}


StopWatch '': running time (millis) = 1211
-----------------------------------------
ms     %     Task name
-----------------------------------------
00504  042%  第一个
00403  033%  第二个
00304  025%  第三个

StopWatch不同打印格式

  • getTotalTimeSeconds() 获取总耗时秒,同时也有获取毫秒的方法
  • prettyPrint() 优雅的格式打印结果,表格形式
  • shortSummary() 返回简短的总耗时描述
  • getTaskCount() 返回统计时间任务的数量
  • getLastTaskInfo().getTaskName() 返回最后一个任务TaskInfo对象的名称