飞道的博客

Springboot 统计 代码执行耗时时间 ,玩法多到眼花

397人阅读  评论(0)

前言

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

开始  System.currentTimeMillis()  减去  结束  System.currentTimeMillis()  等于  耗时   

其实我个人感觉OK的,就这样就蛮好的,很多项目都是这样用的。

简简单单的挺好。

这一篇就是 说点别的玩法,我很欣赏 这个小伙的求知欲, 举一反,多了解一点没毛病。

【关键】ps:   举一反三的 三 ,还有额外的含义,即 三连,点赞、收藏、关注。



正文

① StopWatch

第一种玩法,spring util 里面提供的 StopWatch

示例代码:


  
  1. StopWatch stopWatch = new StopWatch();
  2. stopWatch.start();
  3. //doInsert();
  4. //执行业务等
  5. stopWatch.stop();
  6. System.out.println(stopWatch.getTotalTimeMillis());

效果: 

②  System.nanoTime()

第二种玩法   System.nanoTime()

先不着急看怎么用, 我们看完第一种 StopWatch 的时候, 有没有小伙伴的思维散发够的,想着这spring 封装的统计耗时,自己是怎么实现的?

题外话:

一定要养成这种散发的思维, 很多兄弟朋友都跟我反馈过一些话题,就是说,项目里面没啥东西可学。 

其实,这个很正常, 工作过程不是教导过程,你要自己有 纵向 挖掘 横向 散发的 学习思维。 

直接点StopWatch  的源码看一眼, 哦,原理是用的  System.nanoTime() :

 System.nanoTime() 代码使用示例 :


  
  1. long startTime = System.nanoTime();
  2. doInsert();
  3. //执行业务
  4. long endTime = System.nanoTime();
  5. System.out.println((endTime - startTime));

效果 :

③ new Date ()

第三种玩法 ,平时偶尔也看到别人这么写 new Date 

示例代码:


  
  1. Date startDate = new Date();
  2. // doInsert();
  3. //执行业务等
  4. Date endDate = new Date();
  5. 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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场