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

news/2025/1/12 19:04:01/

前言

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

开始  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():包含任务名称和任务耗时的实体类数组
 

好了,该篇就到这。


http://www.ppmy.cn/news/6865.html

相关文章

python 串口通信

需要准备好的工具 windows上找个串口通信工具 Linux上查看设备列表 有可能需要安装串口驱动,去设备管理器中安装一下 或这个一般串口开发,厂家都会给驱动和串口调试工具 如果串口调试工具调试没有问题了 接下来你用python代码调试 你需要在python环境中安装pyserial库 pip …

通过静态LSP、LDP LSP、MPLS TE三种方式实现总部与分支的互通

一、静态LSP 特点:类似静态路由,简单易用,手动建立lsp,定制转发路径,无需控制报文,资源消耗少。 缺点:不适合大型复杂拓扑,不能根据网络变化而动态调整,需要管理员手动调…

Android OpenGL ES 学习(十一) –渲染YUV视频以及视频抖音特效

OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学习(三) – 绘制平面图形 Android OpenGL ES 学习(四) – 正交投影 Android OpenGL ES 学习(五) – 渐变色 Android OpenGL ES 学习(六) – 使用…

汽车OTA概述

文章目录 前言一、软件更新二、ECU刷写包复用 1.引入库2.读入数据总结前言 掌握OTA(Over-The-Air,无线技术),汽车领域与IT领域正在技术融合! 技术更新,也增加了车载应用场景,软件更新、实时诊…

lua 基本语法

数据类型 lua是动态语言类型,变量不需要类型定义,只需要为变量赋值 lua有8个基本类型: 数据类型描述nil这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。boolean包…

Nmap系统扫描实战

今天继续给大家介绍渗透测试相关知识,本文主要内容是Nmap系统扫描实战。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未授权设备…

沙盘游戏咨询感悟

一、沙盘游戏操作流程 1.和来访者进行交流。咨询刚开始,我和来访者进行了简单的交流,获得来访者的好感与信任,并用心倾听来访者的诉求。来访者在倾诉时语速很快,我感受到她的担心与焦虑,迫切想找到解决问题的方法&…

二、栈和队列

二、栈和队列 栈——后进先出 应用:数制转换、括号匹配、行编辑程序、迷宫求解、表达式求值、八皇后问题、函数调用、递归调用的实现 队列——先进先出 应用:脱机打印输出 多用户系统用户排队分时循环使用CPU和主存 按用户优先级排队,每…