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实例