前言
近日群里有萌新提到关于统计代码执行时间的事:

开始 System.currentTimeMillis()
减去 结束 System.currentTimeMillis()
等于 耗时
其实我个人感觉OK的,就这样就蛮好的,很多项目都是这样用的。
简简单单的挺好。

这一篇就是 说点别的玩法,我很欣赏 这个小伙的求知欲, 举一反三,多了解一点没毛病。
【关键】ps: 举一反三的 三 ,还有额外的含义,即 三连,点赞、收藏、关注。
正文
① StopWatch
第一种玩法,spring util 里面提供的 StopWatch
示例代码:
StopWatch stopWatch = new StopWatch();
stopWatch.start();
//doInsert();
//执行业务等
stopWatch.stop();
System.out.println(stopWatch.getTotalTimeMillis());
效果:

② System.nanoTime()
第二种玩法 System.nanoTime()
先不着急看怎么用, 我们看完第一种 StopWatch
的时候, 有没有小伙伴的思维散发够的,想着这spring 封装的统计耗时,自己是怎么实现的?
题外话:
一定要养成这种散发的思维, 很多兄弟朋友都跟我反馈过一些话题,就是说,项目里面没啥东西可学。
其实,这个很正常, 工作过程不是教导过程,你要自己有 纵向 挖掘 、横向 散发的 学习思维。
直接点StopWatch 的源码看一眼, 哦,原理是用的 System.nanoTime()
:

System.nanoTime()
代码使用示例 :
long startTime = System.nanoTime();
doInsert();
//执行业务
long endTime = System.nanoTime();
System.out.println((endTime - startTime));
效果 :

③ new Date()
第三种玩法 ,平时偶尔也看到别人这么写 new Date
示例代码:
Date startDate = new Date();
// doInsert();
//执行业务等
Date endDate = new Date();
System.out.println((endDate.getTime() - startDate.getTime()));
效果:

④ System.currentTimeMillis()
省略
ps: StopWatch 其实不仅仅是封了一下耗时统计,这样也太。。了 。
里面其实封装了蛮多其他关于时间统计的函数(感兴趣的可以单独去研究研究,特别是参考作者的封装思路 ):
-
void start(“任务名称”)
:开始一个任务名称的计时 -
void stop()
:停止当前任务的计时 -
boolean isRunning()
:是否正在计时某任务 -
long getTotalTimeMillis()
:所有任务的总体执行时间(毫秒单位) -
double getTotalTimeSeconds()
:所有任务的总时间(以秒为单位) -
long getLastTaskTimeMillis()
:上一个任务的耗时(毫秒单位) -
int getTaskCount()
:定时任务的数量 -
String prettyPrint()
:优美地打印所有任务的详细耗时情况 -
StopWatch.TaskInfo[] getTaskInfo()
:包含任务名称和任务耗时的实体类数组
好了,该篇就到这。
作者:小目标青年
来源:https://blog.csdn.net/qq_35387940/
article/details/128444074
推荐
PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!
原文始发于微信公众号(Java知音):SpringBoot 统计代码执行耗时时间 ,玩法多到眼花!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/125798.html