Spring:StopWatch
文章目录
- 一、介绍
- 二、使用
- 1、导入相关的Spring包
- 2、创建StopWatch实例和开始计时
- 3、停止计时
- 4、获取时间
- 5、获取任务详情
- 6、分阶段计时
- 7、获取总耗时与各阶段耗时
- 三、案例
一、介绍
在Spring框架中,StopWatch类通常用于测量代码块的执行时间。您可以使用StopWatch来计算方法调用或代码块的执行时间,以便进行性能分析和优化。
二、使用
您可以按照以下步骤在Spring应用程序中使用StopWatch:
1、导入相关的Spring包
如果你正在使用Spring Boot,那么StopWatch应该已经包含在Spring Boot的starter中。如果你不是使用Spring Boot,你可能需要手动添加Spring Context的依赖。
import org.springframework.util.StopWatch;
2、创建StopWatch实例和开始计时
在需要测量时间的代码块中创建StopWatch实例并开始计时
//使用new StopWatch()来创建一个新的StopWatch实例。
StopWatch stopWatch = new StopWatch();
//使用start()方法开始计时。通常,你会在开始执行你想要测量的代码块之前调用这个方法。
stopWatch.start();
// 执行需要测量时间的代码块
3、停止计时
使用stop()方法停止计时。这个方法会停止当前的计时器,并将此次测量的时间添加到总时间中
stopWatch.stop();
4、获取时间
你可以使用getTotalTimeMillis()或getTotalTimeSeconds()方法来获取总时间,或者使用getLastTaskTimeMillis()或getLastTaskTimeSeconds()方法来获取最后一次任务的时间。
System.out.println("Total time taken: " + stopWatch.getTotalTimeMillis() + "ms");
5、获取任务详情
StopWatch还提供了getTaskInfo()方法,用于获取每个任务的信息,包括任务名称和执行时间。
6、分阶段计时
允许在同一个StopWatch实例中开始多个“任务”,每个任务代表一个独立的计时期间,这样可以计算出不同阶段的耗时。
7、获取总耗时与各阶段耗时
提供了获取所有任务累计运行时间和单个任务运行时间的方法。
三、案例
package chatpter02;import org.springframework.util.StopWatch;import java.util.Arrays;public class TestStopWatch {public static void main(String[] args) {StopWatch stopWatch = new StopWatch();// 开始计时stopWatch.start("task1");// 执行一些任务...try {Thread.sleep(1000); // 模拟耗时任务} catch (InterruptedException e) {e.printStackTrace();}// 停止计时stopWatch.stop();// 开始另一个任务的计时stopWatch.start("task2");// 执行另一个任务...try {Thread.sleep(500); // 模拟另一个耗时任务} catch (InterruptedException e) {e.printStackTrace();}// 停止计时stopWatch.stop();// 输出总时间和每个任务的时间System.out.println("Total time: " + stopWatch.getTotalTimeMillis() + " ms");System.out.println("Task 2 time: " + stopWatch.getLastTaskTimeMillis() + " ms");//System.out.println("Task 2 time: " + stopWatch.get("task2") + " ms");// 获取任务信息Arrays.stream(stopWatch.getTaskInfo()).forEach(taskInfo -> {System.out.println("Task name: " + taskInfo.getTaskName());System.out.println("Task time: " + taskInfo.getTimeMillis());});}}
结果:

相关文章:
Spring:StopWatch
文章目录 一、介绍二、使用1、导入相关的Spring包2、创建StopWatch实例和开始计时3、停止计时4、获取时间5、获取任务详情6、分阶段计时7、获取总耗时与各阶段耗时 三、案例 一、介绍 在Spring框架中,StopWatch类通常用于测量代码块的执行时间。您可以使用StopWatc…...
考研C语言复习进阶(5)
目录 1. 为什么使用文件 2. 什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 3. 文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 4. 文件的顺序读写 编辑 编辑 4.1 对比一组函数: 编辑 5. 文件的随机读写 5.1 fseek 5.2 ftell 5.3 rewind…...
[uni-app] 小程序码转为二维码, 小程序解析此码获取数据
小程序码缩小后太细, 不好扫, 还是改成二维码扫 记录解析该二维码 onLoad(e) {if (e.shareTimeline) { // 以单页面启动-朋友圈分享出的单页面this.shareTimeline e.shareTimeline;let param {certId: e.certId,uid: e.uid,unionid: e.unionid,openid: e.openid,}this.initD…...
【四 (3)数据可视化之 Seaborn 常用图表及代码实现 】
目录 文章导航一、介绍二、安装Seaborn三、导入Seaborn四、设置可以中文显示五、占比类图表1、饼图2、环形图 六、比较排序类1、条形图2、箱线图3、小提琴图 七、趋势类图表1、折线图 八、频率分布类1、直方图 九、关系类图表1、散点图2、成对关系图3、热力图 文章导航 【一 简…...
ASP.NET-Server.HtmlEncode
目录 背景: 1.转义特殊字符: 2.防止跨站脚本攻击(XSS): 3.确保输出安全性: 4.保留原始文本形式: 5.与用户输入交互安全: 实例说明: 不用Server.HtmlEncode 效果展示: 用Server.HtmlEnc…...
Linux下进行JavaEE开发-安装JDK、Tomcat、MySQL
目录 JDKTomcatMySQL JDK 安装JDK步骤: 1、创建目录mkdir /opt/jdk 2、将jdk压缩包通过xftp6上传到该目录 3、cd /opt/jdk 4、tar -zxvf jdk-8u151-linux-x64.tar.gz 5、mkdir /usr/local/java 6、mv /opt/jdk/jdk1.8.0_151 /usr/local/java 7、修改环境变量…...
视频和图像编码标准或格式的发展关系
MPEG-2 继承 MPEG-1: MPEG-2 是 MPEG-1 的继任者,用于更高质量和分辨率的视频传输,如 DVD 和数字电视。 MPEG-4 继承 MPEG-2: MPEG-4 在 MPEG-2 的基础上增加了更多的功能和灵活性,适用于多媒体交互和网络传输。 H.2…...
移动云行动:5.5G技术引领数字化转型
刚刚结束的全国两会上,有人大代表建议应尽快发挥5G-A(5.5G)优势,加快试点城市布局。此前,中国移动已宣布将在300多个城市启动5.5G商用部署。在通信技术的历史长河中,4G改变了我们的生活方式,而5…...
Git如何与Gitee连接(主) , Git的基础使用方式简述(次)
作者前言 本章默认读者已经下好了git并拥有gitee账号,如果这两步没有完成的话,可以先去下载和注册账号接着继续阅读,由于写这篇博客的时候更关注的是怎么连接,所以先展示需要的部分,后面会介绍git的一些基本使用方法&…...
使用VLC实现自动播放视频
VLC是一款开源的多媒体播放器,它支持大量的视频和音频格式,并且具有强大的脚本和编程接口。虽然VLC本身并没有内置的编程语言,但你可以通过其命令行接口或Lua脚本来实现自动化播放视频的功能。 以下是一个简单的示例,展示如何使用…...
KY199 查找
描述: 输入数组长度 n 输入数组 a[1…n] 输入查找个数m 输入查找数字b[1…m] 输出 YES or NO 查找有则YES 否则NO 。 输入描述: 输入有多组数据。 每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1&…...
html5播放flv视频
参考:flv-h265 - npmHTML5 FLV Player. Latest version: 1.7.0, last published: 6 months ago. Start using flv-h265 in your project by running npm i flv-h265. There are no other projects in the npm registry using flv-h265.https://www.npmjs.com/packag…...
【知识简略】 简单理解SpringCloud微服务架构:服务注册发现、配置中心、限流、熔断、降级、网关路由等
主要介绍Nacos那一套。 目录 微服务架构1.服务注册发现2.配置中心3.限流、熔断、降级4.网关路由 微服务架构 Spring Cloud 微服务架构中,Nacos 提供了一系列核心组件和服务治理功能,以下是对 Nacos 中涉及的相关组件及其功能的详细解释: 1.…...
福派斯课堂:选择黑背犬的狗粮时需要注意哪些细节?
亲爱的狗友们,选择适合黑背犬的狗粮可不是一件小事哦!🐾 毕竟,黑背犬作为活泼、聪明的犬种,它们的饮食需求可是很特别的。接下来,就让我们一起探讨一下选择黑背犬狗粮时需要注意的细节吧! 1️⃣…...
Python QT 之PySide6简单入门
目录 1.开发环境配置 1.1 下载PySide6 2.2 配置pycharm相关快捷方式 PySide6_Designer - QT Designer 设计UI PySide6_UIC - 将QT Designer生成的UI文件转换为python文件 PySide6_RCC - 将RCC文件转换为python文件 2.第一个开发实例 2.1 QT desiger设计界面 2.2 将ui文…...
美团大规模KV存储挑战与架构实践
KV 存储作为美团一项重要的在线存储服务,承载了在线服务每天万亿级的请求量,并且保持着 99.995% 的服务可用性。在 DataFunSummit 2023 数据基础架构峰会上,我们分享了《美团大规模 KV 存储挑战与架构实践》,本文为演讲内容的整理…...
计算机基础1-汇编基础
汇编语言是一种低级的计算机语言,它直接与计算机硬件进行交互。在汇编语言中,指令由一系列助记符(mnemonic)组成,用于执行特定的操作,如数据传输、算术运算和控制流程等。每个指令都对应着一条机器码&#…...
六、项目进度管理
六、项目进度管理 根据项目的范围进行项目的进度管理 项目进度管理主要包含以下几个项目管理过程: 规划进度管理定义活动排列活动顺序估算活动持续时间制定进度计划控制进度 1、规划进度管理 规划进度管理是为规划、编制、管理、执行和控制项目进度而制定政策、程序和文…...
java操作HBase
创建一个学生信息表,用来存储学生的姓名(姓名作为行键,且假设姓名不会重复)以及考试成绩,其中考试成绩(score)是一个列族,存储了各个科目的考试成绩。然后向student中添加数据 1、HB…...
【MATLAB】语音信号识别与处理:移动中位数滤波算法去噪及谱相减算法呈现频谱
1 基本定义 移动中位数滤波算法是一种基于中位数的滤波方法,它通过对信号进行滑动窗口处理,每次取窗口内的中位数作为当前点的估计值,以去除噪声。该算法的主要思想是利用中位数的鲁棒性,对信号中的噪声进行有效的消除。 具体来说…...
调试直流电机位置环PID时,我踩过的那些坑和解决思路
直流电机位置环PID调试实战:从振荡到精准控制的进阶指南 调试直流电机的位置环PID控制器就像在钢丝上跳舞——稍有不慎就会陷入振荡、超调或响应迟缓的困境。作为一名经历过无数次深夜调试的工程师,我想分享那些让我抓狂的问题和最终找到的解决方案。这不…...
基于GTE模型的新闻推荐系统:个性化内容分发实践
基于GTE模型的新闻推荐系统:个性化内容分发实践 1. 引言 每天打开新闻应用,你是否经常看到一堆完全不感兴趣的内容?或者发现推荐的文章总是那几类,缺乏新鲜感?传统的新闻推荐系统往往基于简单的关键词匹配或热门排行…...
通义千问2.5-7B惊艳案例展示:看它如何写出高质量营销文案
通义千问2.5-7B惊艳案例展示:看它如何写出高质量营销文案 1. 模型能力概览 通义千问2.5-7B-Instruct作为阿里最新发布的70亿参数指令微调模型,在文本生成领域展现出令人惊艳的能力。这款"中等体量、全能型、可商用"的模型具有以下核心优势&a…...
Kandinsky-5.0-I2V-Lite-5s惊艳效果展示:古风人物图→衣袖飘动+发带飞扬动态视频
Kandinsky-5.0-I2V-Lite-5s惊艳效果展示:古风人物图→衣袖飘动发带飞扬动态视频 1. 模型效果震撼开场 想象一下,你有一张精美的古风人物插画,画中女子衣袂飘飘、发带轻扬。现在,只需一个简单的操作,就能让这幅静态画…...
Netskope 安全与网络重塑人工智能
从移动和云计算的进步到人工智能的指数级增长,网络和安全团队都在努力寻找正确的方法,以保持领先地位。这正是 Netskope 创立的初衷,也是我们不断创新、以正确的方式构建技术和业务的原因,从而帮助我们的客户更轻松地应对挑战。在…...
手把手教你用HFP协议开发智能手表通话功能(附AT指令集)
智能手表通话功能开发实战:HFP协议深度解析与AT指令应用 清晨六点,你的智能手表在手腕上微微震动——不是闹钟,而是一通来自海外客户的紧急电话。你轻触屏幕接听,通过手表内置麦克风清晰沟通,全程无需寻找手机。这种无…...
如何实现Archery复杂SQL审核表单的分步提交与智能验证:完整指南
如何实现Archery复杂SQL审核表单的分步提交与智能验证:完整指南 【免费下载链接】Archery SQL 审核查询平台 项目地址: https://gitcode.com/gh_mirrors/ar/Archery Archery作为一款专业的SQL审核查询平台,其前端表单设计采用了先进的分步提交与智…...
51单片机模拟IIC从机实战:手把手教你用逻辑分析仪调试主从机通信(附完整代码)
51单片机模拟IIC从机实战:逻辑分析仪调试与波形诊断全解析 在嵌入式开发中,IIC总线因其简洁的两线制设计(SCL时钟线与SDA数据线)被广泛应用于传感器、EEPROM等外设通信。但当开发者尝试用51单片机模拟IIC从机时,往往会…...
2026年4月3日 理论基石:数据量与模型参数量的关系
文章目录1. 理论基石:数据量与模型参数量的关系Kaplan Scaling Laws (OpenAI, 2020)Chinchilla Scaling Laws (DeepMind, 2022)2. 实战计算:针对你的 nanoGPT 实验第一步:估算总 Token 数第二步:计算训练步数 (max_iters)第三步&a…...
基于Python的毕业生实习管理系统
项目介绍:基于Python的毕业生实习管理系统技术栈 项目编号:本课题采用 Python 语言进行开发,系统整体基于 Web 平台实现。前端页面主要使用 HTML、CSS、JavaScript 进行构建,并结合 Bootstrap 提升页面布局与交互效果;…...
