在开发中,经常要查看代码执行的效率,比较直观的方法是打印各个方法所执行的时间,通常会采用下面的方法:
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对象的名称