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

点击上方“Java基基”,选择“设为星标”

做积极的人,而不是积极废人!

每天 14:00 更新文章,每天掉亿点点头发...

源码精品专栏

 

来源:blog.csdn.net/qq_35387940/

article/details/128444074


前言

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

5733f89580e40f37c704de0cc23925b2.png

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

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

简简单单的挺好。

10761df86911edd69db5fd42062fe03b.png

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

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

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

正文

① StopWatch

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

示例代码:

StopWatch stopWatch = new StopWatch();
stopWatch.start();
//doInsert();
//执行业务等
stopWatch.stop();
System.out.println(stopWatch.getTotalTimeMillis());

效果:

741b2618a36f5ae1172972fad24e28e2.png

②  System.nanoTime()

第二种玩法  System.nanoTime()

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

题外话:

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

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

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

03701da84ba640387499419af66880b4.png

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

long startTime = System.nanoTime();
doInsert();
//执行业务
long endTime = System.nanoTime();
System.out.println((endTime - startTime));

效果 :

f08722b069f30d4fda44a3fa12e0b11e.png

③ new Date()

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

示例代码:

Date startDate = new Date();
// doInsert();
//执行业务等
 Date endDate = new Date();
 System.out.println((endDate.getTime() - startDate.getTime()));

效果:

a3c6f7724c28206d8d2b382cb42cf441.png

④  System.currentTimeMillis()

省略

ps: StopWatch 其实不仅仅是封了一下耗时统计,这样也太。。了  。

里面其实封装了蛮多其他关于时间统计的函数(感兴趣的可以单独去研究研究,特别是参考作者的封装思路 ):

  • void start(“任务名称”):开始一个任务名称的计时

  • void stop():停止当前任务的计时

  • boolean isRunning():是否正在计时某任务

  • long getTotalTimeMillis():所有任务的总体执行时间(毫秒单位)

  • double getTotalTimeSeconds():所有任务的总时间(以秒为单位)

  • long getLastTaskTimeMillis():上一个任务的耗时(毫秒单位)

  • int getTaskCount():定时任务的数量

  • String prettyPrint():优美地打印所有任务的详细耗时情况

  • StopWatch.TaskInfo[] getTaskInfo():包含任务名称和任务耗时的实体类数组

好了,该篇就到这。



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

5c2570531c848132d5721023b3c9b6d6.png

已在知识星球更新源码解析如下:

345c0e1b1019bba64e49cf3cdebd382d.jpeg

b2dc197c9bce4ae1cda0efd8b3846f0f.jpeg

fa44982f3637304377a45109ae894d4b.jpeg

047a5876d1ffadd77b5276c5d57ac9e9.jpeg

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 6W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值