有时我们在做开发的时候需要记录每个任务执行时间,或者记录一段代码执行时间,最简单的方法就是打印当前时间与执行完时间的差值,然后这样如果执行大量测试的话就很麻烦,并且不直观,如果想对执行的时间做进一步控制,则需要在程序中很多地方修改,目前spring-framework提供了一个StopWatch类可以做类似任务执行时间控制,也就是封装了一个对开始时间,结束时间记录操作的Java类,如下:
public class TestStopWatch {
private void test() throws InterruptedException {
StopWatch stopWatch = new StopWatch("程序流程耗时统计");
stopWatch.start("查询数据");
System.out.println("查询操作=====");
Thread.sleep(1000);
stopWatch.stop();
stopWatch.start("新增数据");
System.out.println("新增操作=====");
Thread.sleep(2000);
stopWatch.stop();
stopWatch.start("发起远程调用");
System.out.println("远程调用服务====");
Thread.sleep(3000);
stopWatch.stop();
System.out.println(stopWatch.prettyPrint());
System.out.println(stopWatch.getTotalTimeMillis());
System.out.println(stopWatch.getLastTaskName());
System.out.println(stopWatch.getLastTaskInfo());
System.out.println(stopWatch.getTaskCount());
}
public static void main(String[] args) throws InterruptedException {
TestStopWatch testStopWatch = new TestStopWatch();
testStopWatch.test();
}
}
结果:
查询操作=====
新增操作=====
远程调用服务====
StopWatch '程序流程耗时统计': running time (millis) = 6011
-----------------------------------------
ms % Task name
-----------------------------------------
01009 017% 查询数据
02001 033% 新增数据
03001 050% 发起远程调用
6011
发起远程调用
org.springframework.util.StopWatch$TaskInfo@66a29884
3