我们想要测试一个方法的耗时情况,通常会用下面的一种方式:
long start1 = System.currentTimeMillis();
// 模拟业务逻辑处理
Thread.sleep(300);
long end1 = System.currentTimeMillis();
long start2 = System.currentTimeMillis();
// 模拟业务逻辑处理
Thread.sleep(730);
long end2 = System.currentTimeMillis();
System.out.println("执⾏操作1,耗时:" + (end1 - start1));
System.out.println("执⾏操作2,耗时:" + (end2 - start2));
虽然书写简单,但导致系统中充斥着低级代码,很容易让⼈怀疑你的技术实⼒。
我们的直接想法是能不能写个⼯具类,即统计 代码块 耗时,还能将分析结果直观展示出来
恰好 Spring框架提供了⼀个⼯具类, org.springframework.util.StopWatch ,提供了轻量级统计功能,对应
的pom⽂件依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
或者hutool内也有此工具类
代码:
StopWatch sw = new StopWatch();
sw.start("任务1");
// 模拟业务逻辑处理
Thread.sleep(300);
sw.stop();
sw.start("任务2");
// 模拟业务逻辑处理
Thread.sleep(730);
sw.stop();
System.out.println(sw.prettyPrint());
运行结果:
StopWatch '': running time (millis) = 1033
-----------------------------------------
ms % Task name
-----------------------------------------
00303 029% 任务1
00730 071% 任务2