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

场景

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

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

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

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

注:

博客:
霸道流氓气质-CSDN博客

实现

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());//trueSystem.out.println(stopWatch.currentTaskName());//task1stopWatch.stop();System.out.println(stopWatch.isRunning());//falseSystem.out.println(stopWatch.getLastTaskName());//task1System.out.println(stopWatch.getTotalTimeMillis());//2010stopWatch.start("task2");TimeUnit.SECONDS.sleep(1);stopWatch.stop();System.out.println(stopWatch.getLastTaskName());//task2System.out.println(stopWatch.getLastTaskTimeMillis());//1008System.out.println(stopWatch.getTaskCount());//2System.out.println(stopWatch.shortSummary());//StopWatch 'test01': running time = 3018953100 ns//StopWatch 'test01': running time = 3018953100 nsSystem.out.println(stopWatch.prettyPrint());//---------------------------------------------//ns         %     Task name//---------------------------------------------//2010357100  067%  task1//1008596000  033%  task2

运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/447875.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据探索与可视化:可视化分析数据-下

目录 一、前言 二、介绍 Ⅰ.时间序列数据 Ⅱ.文本数据 Ⅲ.社交网络数据 三、结语 一、前言 那么本篇将互怼其他类型的数据分析的可视化方法进行介绍,它们分别是:时间序列,文本数据,社交网络数据。 二、介绍 Ⅰ.时间序列数据 import pan…

算法——A/算法通识

目录 一、复杂度分析 A/时间复杂度 B/空间复杂度 C/分析技巧 二、枚举分析 A/枚举算法介绍 B/解空间的类型 C/循环枚举解空间 三、模拟算法 四、递归 A/递归介绍 递归的两个关键要素: B/递归如何实现 C/递归和循环的比较 一、复杂度分析 A/时间复杂度…

一文7个步骤从0到1教你搭建Selenium 自动化测试环境

【导语】Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。本文详细介绍了搭建自动化测试环境所需的工具,让你学习自动化测试不…

制造业为什么越来越不景气?制造业为什么需要数字化转型?

从员工来说,付出和收获不成比例,干得多、拿得少,自然而然就越来越少人会选择这一行了。 从行业来说,成本提升、竞争大、利润低,维持运转更难,想提升员工待遇可能力不从心吧。 制造业工厂主要有以下3大问题…

STM32MP135开发板助力电力行业,IEC61850协议移植笔记

1.概述 IEC61850是变电站自动化系统(SAS)中通信系统和分散能源(DER)管理的国际标准。它通过标准的实现,实现了智能变电站的工程运作标准化。使得智能变电站的工程实施变得规范、统一和透明,在电力和储能系…

C++ 之LeetCode刷题记录(二十六)

😄😊😆😃😄😊😆😃 开始cpp刷题之旅。 目标:执行用时击败90%以上使用 C 的用户。 125. 验证回文串 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后…

基于SpringBoot Vue学生信息管理

大家好✌!我是Dwzun。很高兴你能来阅读我,我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结,还为大家分享优质的实战项目,本人在Java项目开发领域有多年的经验,陆续会更新更多优质的Java实战项目&#x…

PP-PicoDet注意版面分析模型的结果导出时不需要有后处理,可以在configs/runtimes.yml中设置benchmark=Tr

版面分析 使用轻量模型PP-PicoDet检测模型实现版面各种类别的检测。 注意 版面分析模型的结果导出时不需要有后处理,可以在configs/runtimes.yml中设置benchmarkTrue

事件分发机制:demo复现子View的点击事件不起作用

demo使用的sdk是32 自定义一个MyLayout,继承自LinearLayout,重写onInterceptTouchEvent方法,返回true。如下: package com.exp.clickdemo;import android.content.Context; import android.util.AttributeSet; import android.vi…

详解 websocket

目录 一、什么是websocket 二、websocket 的用途 三、websocket 特点 四、websocket 帧 五、websocket URL 格式 六、发送消息 七、关闭会话的方式 八、关闭帧错误码 九、简单的websocket 代码 一、什么是websocket WebSocket该协议在规范RFC 6455中进行了描述&#…

C语言·贪吃蛇游戏(上)

1. 游戏任务 使用C语言在Windows环境的控制台中模拟实现小游戏贪吃蛇 游戏中要包含以下功能: 1. 贪吃蛇地图绘制 2. 贪吃蛇上下左右移动和吃食物 3. 蛇撞墙,或撞到自身死亡 4. 计算得分 5. 蛇身加速、减速 6. 暂停游戏 2. Win32 API 介绍 Windows是一种多…

Linux 网络配置及基础服务

目录 一. 查看网络配置信息的相关命令 1.1 ifconfig 命令 作用 1: 作用 2: 拓展: 1.2 ip/ethtool命令 1.3 hostname命令 1.4 route 命令 1.5 netstat 命令 1.6 ss(socket statistics)命令 1.7 ping 命令 …