Springboot之如何统计代码执行耗时时间

 更新时间:2023年03月16日 15:48:20   作者:小目标青年  
这篇文章主要介绍了Springboot之如何统计代码执行耗时时间问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

前言

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

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

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

简简单单的挺好。

正文

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

总结

好了,该篇就到这里了~

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • JVM分析之类加载机制详解

    JVM分析之类加载机制详解

    JVM内部架构包含类加载器、内存区域、执行引擎等。日常开发中,我们编写的java文件被编译成class文件后,jvm会进行加载并运行使用类。本次将对JVM加载部分进行分析,便于大家了解并掌握加载机制
    2022-08-08
  • Java Calendar类使用总结及使用实例

    Java Calendar类使用总结及使用实例

    这篇文章主要介绍了Java Calendar类使用总结及使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Java里的static import使用小结

    Java里的static import使用小结

    这篇文章主要介绍了Java里的static import使用小结,本文给出了一些使用示例,并总结了一些使用特性,需要的朋友可以参考下
    2015-06-06
  • Jpa 实现自动更新表中的创建日期和修改时间

    Jpa 实现自动更新表中的创建日期和修改时间

    这篇文章主要介绍了Jpa 实现自动更新表中的创建日期和修改时间,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • Java中Set集合转为List集合常见的两种方式

    Java中Set集合转为List集合常见的两种方式

    List是Java中比较常用的集合类,指一系列存储数据的接口和类,可以解决复杂的数据存储问题,这篇文章主要给大家介绍了关于Java中Set集合转为List集合常见的两种方式,需要的朋友可以参考下
    2023-12-12
  • JDK1.7 Paths,Files类实现文件夹的复制与删除的实例

    JDK1.7 Paths,Files类实现文件夹的复制与删除的实例

    下面小编就为大家分享一篇JDK1.7 Paths,Files类实现文件夹的复制与删除的实例,具有很好的参考价值,希望对大家有所帮助。以前跟随小编过来看看吧
    2017-11-11
  • Java Mybatis中的 ${ } 和 #{ }的区别使用详解

    Java Mybatis中的 ${ } 和 #{ }的区别使用详解

    这篇文章主要介绍了Mybatis中的 ${ } 和 #{ }的区别使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Jmeter BeanShell 内置变量vars、props、prev的使用详解

    Jmeter BeanShell 内置变量vars、props、prev的使用详解

    这篇文章主要介绍了Jmeter BeanShell 内置变量vars、props、prev的使用 ,文中给大家介绍了Jmeter中关于BeanShell的相关知识,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • SpringBoot多级缓存实现方案总结

    SpringBoot多级缓存实现方案总结

    所谓多级缓存,是指在整个系统架构的不同系统层面进行数据缓存,以提升访问速度,多级缓存就是为了解决项目服务中单一缓存使用不足的缺点,本文我们将给大家总结了SpringBoot多级缓存实现方案,需要的朋友可以参考下
    2023-08-08
  • 基于SpringBoot与Mybatis实现SpringMVC Web项目

    基于SpringBoot与Mybatis实现SpringMVC Web项目

    这篇文章主要介绍了基于SpringBoot与Mybatis实现SpringMVC Web项目的相关资料,需要的朋友可以参考下
    2017-04-04

最新评论