在做开发的时需要统计每个方法的执行消耗时间,或者记录一段代码执行时间,最简单的方法就是打印当前时间与执行完时间的差值,然后这样如果执行大量测试的话就很麻烦,并且不直观,然而使用使用Spring的StopWatch类就可以优雅打印方法执行耗时间
简单的Demo
import org.springframework.util.StopWatch;
public class SpringStopWatchExample {
public static void main (String[] args) throws InterruptedException {
StopWatch sw = new StopWatch();
sw.start();
//long task simulation
Thread.sleep(1000);
sw.stop();
System.out.println(sw.getTotalTimeMillis());
}
}
打印同个方法多个代码块的执行消耗时间
import org.springframework.util.StopWatch;
public class SpringStopWatchExample2 {
public static void main (String[] args) throws InterruptedException {
StopWatch sw = new StopWatch();
sw.start("A");
Thread.sleep(1000);
sw.stop();
sw.start("B");
Thread.sleep(200);
sw.stop();
sw.start("C");
Thread.sleep(500);
sw.stop();
System.out.println(sw.prettyPrint());
}
}
输入结果
StopWatch '': running time (millis) = 1031
-----------------------------------------
ms % Task name
-----------------------------------------
00514 100% A
00302 0200% B
00215 0500% C
StopWatch
常用方法
getTotalTimeSeconds()
获取总耗时秒,同时也有获取毫秒的方法
prettyPrint()
优雅的格式打印结果,表格形式
shortSummary()
返回简短的总耗时描述
getTaskCount()
返回统计时间任务的数量
getLastTaskInfo().getTaskName()
返回最后一个任务TaskInfo
对象的名称