0x01:Background有时候做开发的时候需要记录每个任务的执行时间或者一段代码的执行时间。最简单的方法就是打印当前时间和执行时间的差值,然后如果进行大量的测试就会很麻烦,而且不直观。如果想进一步控制执行时间,需要在程序中多处修改。目前spring-framework提供了一个StopWatch类,可以控制类似任务的执行时间,也就是封装了一对开始时间,结束时间记录工具实例先来看几个总耗时统计输出导入的例子org.springframework.util.秒表;publicclassSpringStopWatchExample{publicstaticvoidmain(String[]args)throwsInterruptedException{StopWatchsw=newStopWatch();sw.start();//longtasksimulationThread.sleep(1000);sw.stop();System.out.println(sw.getTotalTimeMillis());}}Output1013最后一个任务的输出耗时publicclassSpringStopWatchExample2{publicstaticvoidmain(String[]args)throwsInterruptedException{StopWatchsw=newStopWatch();sw.start("A");//settingataskname//longtasksimulationThread.sleep(1000);sw.stop();System.out.println(sw.getLastTaskTimeMillis());}}输出1009优雅打印所有任务的耗时和比例,格式为importorg.springframework.util.StopWatch;publicclassSpringStopWatchExample3{publicstaticvoidmain(String[]args)throwsInterruptedException{StopWatchsw=newStopWatch();sw.s开始(“A”);Thread.sleep(500);sw.stop();sw.start(“B”);Thread.sleep(300);sw.stop();sw.start(“C”);Thread.sleep(200);sw.stop();System.out.println(sw.prettyPrint());}}outputStopWatch'':runningtime(millis)=1031--------------------------------------ms%任务名称----------------------------------------00514050%A00302029%B00215021%C:序列服务输出耗时信息@OverridepubliclongnextSeq(Stringname){StopWatchwatch=newStopWatch();watch.start("单次sequence获取总消耗");longsequence=generator.generateId(name);watch.stop();logger.info(watch.prettyPrint());returnsequence;}0x02:更多用法不同打印结果getTotalTimeSeconds()获取总耗时秒数,还有获取毫秒数的方法.getTaskName()返回上一个任务的名称TaskInfo对象更多查看文档https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/util/StopWatch.html0x03:总结Stati之后stical代码执行效率推荐大家使用这个工具进行输出。它不需要从开始时间和结束时间中减去,并且以优雅的方式完成。这件事。
