首页 > 编程语言 >Java中使用StopWatch实现代码块耗时统计/计时某段代码执行

Java中使用StopWatch实现代码块耗时统计/计时某段代码执行

时间:2024-02-02 15:44:06浏览次数:32  
标签:Java 某段 System StopWatch 代码执行 耗时 stopWatch println out

场景

Java实战-基于JDK的LRU算法实现、优雅的实现代码耗时统计(Spring AOP、AutoCloseable方式):

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/130970242

上面讲了统计方法的耗时,实现和使用面向方法体。

如果是在方法中,需要频繁统计一段段的代码块的耗时,可以使用StopWatch。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

实现

1、StopWatch是Spring框架中的一个计时器工具类,

其原理是基于System.currentTimeMillis(),并且简化了计时的逻辑。

StopWatch的实现机制是通过startTime和endTime两个时间戳的方式来记录代码块的执行时间。

路径:import org.springframework.util.StopWatch;

常用api:

start():可以不传入参数,开始一个无名称的任务的计时,也可以传入String类型的参数来开始指定任务名的任务计时
stop():停止当前任务的计时
isRunning():返回此stopWatch是否正在计时某任务
getTotalTimeMillis():返回所有任务的总体执行时间(毫秒单位)
getLastTaskTimeMillis():返回上一个任务的耗时(毫秒单位)
prettyPrint():优美地打印所有任务的详细耗时情况

2、使用示例

        StopWatch stopWatch = new StopWatch("test01");
        stopWatch.start("task1");
        TimeUnit.SECONDS.sleep(2);
        System.out.println(stopWatch.isRunning());//true
        System.out.println(stopWatch.currentTaskName());//task1
        stopWatch.stop();
        System.out.println(stopWatch.isRunning());//false
        System.out.println(stopWatch.getLastTaskName());//task1
        System.out.println(stopWatch.getTotalTimeMillis());//2010
        stopWatch.start("task2");
        TimeUnit.SECONDS.sleep(1);
        stopWatch.stop();
        System.out.println(stopWatch.getLastTaskName());//task2
        System.out.println(stopWatch.getLastTaskTimeMillis());//1008
        System.out.println(stopWatch.getTaskCount());//2
        System.out.println(stopWatch.shortSummary());
        //StopWatch 'test01': running time = 3018953100 ns
        //StopWatch 'test01': running time = 3018953100 ns
        System.out.println(stopWatch.prettyPrint());
        //---------------------------------------------
        //ns         %     Task name
        //---------------------------------------------
        //2010357100  067%  task1
        //1008596000  033%  task2

运行结果

 

标签:Java,某段,System,StopWatch,代码执行,耗时,stopWatch,println,out
From: https://www.cnblogs.com/badaoliumangqizhi/p/18003299

相关文章

  • Java并发基础:CountDownLatch全面解析!
    内容概要CountDownLatch的优点在于能够简洁高效地协调多个线程的执行顺序,确保一组线程都完成后才触发其他线程的执行,适用于资源加载、任务初始化等场景。它提供了清晰的等待/通知机制,易于理解和使用,是提升多线程程序性能和可靠性的重要工具。核心概念CountDownLatch是java.util......
  • JAVA一维数组介绍和初始化
    一维数组概述一维数组的初始化(声明数组并开辟内存空间)动态初始化1动态初始化2静态初始化一维数组的使用细节......
  • Java将密码加盐加密存储和校验
    注册和登陆的时候,需要加密和校验,以下为加密和解密代码packageorg.ongoal.common.config;importorg.springframework.util.DigestUtils;importorg.springframework.util.StringUtils;importjava.util.UUID;publicclassPasswordUtil{/***加盐算法->格......
  • java开发中业务层和数据层的区别
    其实标准业务层开发很多初学者认为就是调用数据层,怎么说呢?这个理解是没有大问题的,更精准的说法应该是组织业务逻辑功能,并根据业务需求,对数据持久层发起调用。有什么差别呢?目标是为了组织出符合需求的业务逻辑功能,至于调不调用数据层还真不好说,有需求就调用,没有需求就不调用。一个......
  • Java设计模式_1(10/23)
    Java设计模式_1(10/23)目录Java设计模式_1(10/23)单例模式定义饿汉式懒汉式懒汉式(双重检查锁)简单工厂模式定义代码优点缺点工厂模式定义抽象工厂模式装饰器模式适配器模式观察者模式定义外观模式定义状态模式定义策略模式定义代理模式单例模式定义确保类只有一个实例,而且自行......
  • Java 中的List
    ListList接口常用方法List集合存储元素特点:有序可重复List既然是Collection接口的子接口,那么肯定List接口有自己的“特色”方法以下列出List特有的常用的方法:voidadd(intindex,Eelement)将指定的元素插入此列表中的指定位置(可选操作)。Objectget(intindex)返回......
  • java: Compilation failed: internal java compiler error
    idea启动项目后出现 java:Compilationfailed:internaljavacompilererror错误第一种情况:idea的JDK版本和项目配置的不同。解决方法:查看项目中配置的jdk版本,再查看 idea配置的版本项目配置的:在idea中要查看三个地方的配置 1、File---->Setting------>javacompile......
  • 深入浅出Java多线程(六):Java内存模型
    引言大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第六篇内容:Java内存模型。大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!!在并发编程中,有两个关键问题至关重要,它们是线程间通信机制和线程间同步控制。线程间通信机制线程间通信是指在一个多线程程序......
  • 深入浅出Java多线程(八):volatile
    引言大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第八篇内容:volatile。大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!!在当今的软件开发领域,多线程编程已经成为提高系统性能和响应速度的重要手段。Java作为广泛应用的多线程支持语言,其内存模型(JMM)设计巧妙......
  • java基础面试
    java基础个人介绍:面试官您好,我叫赵英波,本科毕业于黄河科技学院软件工程专业,来自河南省郑州市,从网上看到公司招聘感觉比较适合字迹。所以来争取下这份工作。熟悉javaee,javase,熟悉javaweb,springssm框架。熟悉mysql,redis熟悉消息队列mq,熟悉linux基本命令,了解若依框架......