StopWatch

对代码的执行耗时,可以使用

long start = System.currentTimeMillis();
......
long end = System.currentTimeMillis();
System.out.println("任务耗时:" + (end - start));

org.springframework.util.StopWatch,可方便的对程序部分代码进行计时(ms级别)

StopWatch sw = new StopWatch();
try {
       sw.start("A");
       Thread.sleep(1000);
       sw.stop();
       sw.start("B");
       Thread.sleep(2000);
       sw.stop();
       sw.start("C");
       Thread.sleep(3000);
} catch (InterruptedException e) {
     e.printStackTrace();
}
sw.stop();
System.out.println("任务综合信息:" + sw.prettyPrint());
System.out.println("总任务时间:" + sw.getTotalTimeMillis());
System.out.println("最后一个任务的名称" + sw.getLastTaskName());
System.out.println("任务数量:" + sw.getTaskCount());
for (StopWatch.TaskInfo t : sw.getTaskInfo()) {
    System.out.println(t.getTaskName() + " : " + t.getTimeMillis());
}
System.out.println("shortSummary: "+sw.shortSummary());
System.out.println("TotalTimeMillis: "+sw.getTotalTimeMillis());

输出

任务综合信息:StopWatch '': running time = 6000242211 ns
---------------------------------------------
ns % Task name
---------------------------------------------
1000004985 017% A
2000104392 033% B
3000132834 050% C

总任务时间:6000
最后一个任务的名称C
任务数量:3
A : 1000
B : 2000
C : 3000
shortSummary: StopWatch '': running time = 6000242211 ns
TotalTimeMillis: 6000

说明:

  start开始记录,stop停止记录

  StopWatch的prettyPrint,可直观的输出代码执行耗时,以及执行时间百分比

  shortSummary 和 getTotalTimeMillis,查看程序执行时间

优点:

spring自带工具类,可直接使用,使用简单

统一归纳,展示结果直观

性能消耗相对较小,最大程度的保证了start与stop之间的时间记录的准确性

可在start时直接指定任务名字,从而更加直观的显示记录结果

不足:

  一个StopWatch实例一次只能开启一个task,不能同时start多个task

  在该task还没stop之前不能start一个新的task,必须在该task stop之后才能开启新的task

  若要一次开启多个,需要new不同的StopWatch实例

 

 

posted @ 2020-04-02 17:58  慕尘  阅读(768)  评论(0编辑  收藏  举报