org.springframework.util.StopWatch
说明:
该工具类主要用于对程序代码进行计时统计,可以理解为对System.currentTimeMillis()的封装,该工具类有很多种封装,例如:org.apache.commons.lang3.time.StopWatch,cn.hutool.core.date.StopWatch,org.junit.rules.Stopwatch,com.google.common.base.Stopwatch等,不同的工具用法也略有不同,此处主要介绍常用的spring-core包中的StopWatch
简单示例:
public static void main(String[] args) {
try {
StopWatch stopWatch = new StopWatch("id1");
// 设置是否保存任务列表,默认为true,但当有大量计时任务时会消耗较大内存,视情况可配置false
stopWatch.setKeepTaskList(true);
stopWatch.start("task1");
Thread.sleep(1500);
stopWatch.stop();
stopWatch.start("task2");
Thread.sleep(2000);
stopWatch.stop();
// 用于格式化对象
ObjectMapper om = new ObjectMapper();
System.out.println("所有任务总耗时:" + stopWatch.getTotalTimeMillis());
System.out.println("任务总数:" + stopWatch.getTaskCount());
System.out.println("所有任务详情:" + om.writerWithDefaultPrettyPrinter().writeValueAsString(stopWatch.getTaskInfo()) );
System.out.println("格式化打印任务详情:" + stopWatch.prettyPrint());
}catch (Exception ex){
ex.printStackTrace();
}
}
输出结果
所有任务总耗时:3524
任务总数:2
所有任务详情:[ {
"taskName" : "task1",
"timeNanos" : 1512145400,
"timeSeconds" : 1.5121454,
"timeMillis" : 1512
}, {
"taskName" : "task2",
"timeNanos" : 2012313700,
"timeSeconds" : 2.0123137,
"timeMillis" : 2012
} ]
格式化打印任务详情:StopWatch 'id1': running time = 3524459100 ns
---------------------------------------------
ns % Task name
---------------------------------------------
1512145400 043% task1
2012313700 057% task2