有时候我们在做开发或者性能调优的时候需要知道每个任务的执行时间,或者需要记录一段代码的执行时间,最简单的方法就是打印当前时间与执行时间的差值,比如:
但是如果执行一个大量的测试非常麻烦,而且不直观,如果想对执行时间做进一步的控制,需要修改程序中的很多地方。spring-framework提供了一个StopWatch类可以做类似任务执行时间的控制,即封装了一个开始时间、结束时间记录工具。
首先来看一下源码。
通过源码可以看到,StopWatch其实就是封装了个简单的计时器,允许对多个任务进行计时,方便显示总运行时间和每个指定任务的运行时间。隐藏 System.nanoTime() 的使用,提高应用程序代码的可读性并减少计算错误的可能性。
然后我们下面来看几个使用示例
pom.xml依赖
1、最简单的一个使用方式就是在业务代码的前后增加计时,然后输出结果分析耗时。
2、对于复杂业务逻辑的性能调优,往往就需要先分析出耗时最大的业务处理逻辑,然后再进一步去优化。在实例化StopWatch和开始任务时候,可以设定名称,来方便我们查看结果。
但是在使用的过程中,需要注意,StopWatch并不是线程安全的,并且不使用同步。在实际业务中常有多线程调用单例方法时候,需要注意可能会影响正常业务。
从 Spring Framework 5.2 开始,运行时间以纳秒为单位进行跟踪和报告,如果需要显示单位为毫秒,需要转换。
- 作者:Yibin
- 链接:https://yibin.dev/article/0672cdab-6d1f-4e70-904f-dec765890fcb
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章






