java记录程序执行时间之StopWatch
在日常写代码的过程中,通常会记录某一段程序的运行时间,使用的方式是System.currentTimeMillis()。
Spring也自带了一种方式StopWatch,使用起来也比较简单。
共分为四步:创建对象,开始记录执行时间,结束记录执行时间,获取执行的总时间。
package com.zys.example; import org.springframework.util.StopWatch; import java.util.ArrayList;
import java.util.List; public class AppMain {
public static void main(String[] args) {
StopWatch watch = new StopWatch();
watch.start();
List<String> list = new ArrayList<>();
for (int i = 0; i < 100000; i++) {
list.add("哈哈" + (i + 1));
}
watch.stop();
System.out.println("用时(ms):" + watch.getTotalTimeMillis());//26
} }
上述代码是记录向集合中插入10万条数据所需要的时间,最后打印的结果是26ms,此时间是不固定的。相比于System.currentTimeMillis()无需计算两个时间差,显得更为方便。
除此之外,还可以记录多个任务一共执行的时间,需要指定任务名称:
public static void main(String[] args) throws InterruptedException {
StopWatch watch = new StopWatch();
watch.start("task1");
Thread.sleep(200);
watch.stop();
watch.start("task2");
Thread.sleep(5000);
watch.stop();
watch.start("task3");
Thread.sleep(10);
watch.stop();
System.out.println("任务数用时:" + watch.getTotalTimeMillis() + " ms");
System.out.println("任务数:" + watch.getTaskCount());
System.out.println("任务执行的百分比:" + watch.prettyPrint());
}
执行结果如下:

除了需要记录总用时外,还可以记录每个任务耗时时间,调用getLastTaskTimeMillis方法即可:
public static void main(String[] args) throws InterruptedException {
Long t1, t2, t3;
StopWatch watch = new StopWatch();
watch.start("task1");
Thread.sleep(200);
watch.stop();
t1 = watch.getLastTaskTimeMillis();
watch.start("task2");
Thread.sleep(5000);
watch.stop();
t2 = watch.getLastTaskTimeMillis();
watch.start("task3");
Thread.sleep(10);
watch.stop();
t3 = watch.getLastTaskTimeMillis();
System.out.println("任务task1用时:" + t1 + " ms");
System.out.println("任务task2用时:" + t2 + " ms");
System.out.println("任务task3用时:" + t3 + " ms");
System.out.println("任务数用时:" + watch.getTotalTimeMillis() + " ms");
}
执行结果如下:

java记录程序执行时间之StopWatch的更多相关文章
- Spring AOP实例——异常处理和记录程序执行时间
实例简介: 这个实例主要用于在一个系统的所有方法执行过程中出线异常时,把异常信息都记录下来,另外记录每个方法的执行时间. 用两个业务逻辑来说明上述功能,这两个业务逻辑首先使用Spring AOP的自动 ...
- java查看程序执行时间
public static void main(String[] args) { long a= System.currentTimeMillis();//获取当前系统时间(毫秒) for (int ...
- java获取程序执行时间
第一种是以毫秒为单位计算的. //伪代码 long startTime=System.currentTimeMillis(); //获取开始时间 doSomeThing(); //测试的代码段 lon ...
- QElapsedTimer定时器记录程序执行时间
QElapedTimer类提供了一种快速计算运行时间的方法,从Qt4.7引入. QElapsedTimer类通常用于快速计算两个事件之间经过了多少时间.它的API与QTime相似,因此可以将正在使用的 ...
- 在 NetBeans IDE 6.0 中分析 Java 应用程序性能
NetBeans IDE 6.0 包含一个强大的性能分析工具,可提供与应用程序运行时行为有关的重要信息.通过 NetBeans 性能分析工具,我们可以方便地在 IDE 中监控应用程序的线程状态.CPU ...
- .Net Core实现记录接口执行时间的中间件
项目中有时接口访问时间过长,但是通过浏览器F12查看时,接口访问时间很正常,所以就很奇怪,于是写一个中间件,记录所有接口访问时间的中间件. 一.中间件 中间件是应用程序处理管道中的组件,用来处理请求和 ...
- 软件性能测试分析与调优实践之路-Java应用程序的性能分析与调优-手稿节选
Java编程语言自从诞生起,就成为了一门非常流行的编程语言,覆盖了互联网.安卓应用.后端应用.大数据等很多技术领域,因此Java应用程序的性能分析和调优也是一门非常重要的课题.Java应用程序的性能直 ...
- Linux学习心得之 jnlp的文件和java应用程序安全设置
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 jnlp的文件和java应用程序安全设置 1.前言2. jnlp的文件打开3.java应用程 ...
- java\c程序的内存分配
JAVA 文件编译执行与虚拟机(JVM)介绍 Java 虚拟机(JVM)是可运行Java代码的假想计算机.只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该 ...
- C# 统计程序执行时间
随便写写,小马哥勿怪 最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷. 话说马云年轻的时候也是屌丝一枚,有图为证 现 ...
随机推荐
- 知网下载 pdf 而不是caj
简介 主要通过F12实现 第一步 按下F12 CAJ全文下载 第二步 将 http://search.cnki.net/down/default.aspx?filename=2004072993.nh ...
- SciTech-Statistics-英语授课:Business Statistics商务统计
What Is a Population Parameter? By Alane Lim, Alane Lim, Science Expert Ph.D., Materials Science and ...
- SciTech-Mathematics-Probability+Statistics-Discrete Binomial Distribution: 离散二项式分布
Binomial Distribution AI, Data Science, and Statistics Statistics and Machine Learning Toolbox Proba ...
- Rust:axum学习笔记(3) extract
接上一篇继续,今天学习如何从Request请求中提取想要的内容,用axum里的概念叫Extract. 预备知识:json序列化/反序列化 鉴于现在web开发中,json格式被广泛使用,先熟悉下rust ...
- 深度解答:win11系统中大家最关心的5个问题
今天,深度技术就来解答一下几个大家讨论比较多的问题,分享一下经验和感受,希望对想要升级win11系统的小伙伴有一些帮助. 01.你的设备能升级win11系统吗? 目前,微软对Win 11的升级限制主要 ...
- Win10系统怎么打开everyone权限的问题
很多电脑基地的小伙伴都不知道everyone权限是什么吧?everyone是针对电脑的每个用户的权限,一旦涉及到系统权限操作务必要慎重选择,稍微不对及有可能引起系统故障.everyone权限是最高的用 ...
- [SWPUCTF 2021 新生赛]pop
题目源码 <?php error_reporting(0); show_source("index.php"); class w44m{ private $admin = ' ...
- git使用每次输入密码问题
原因:在初始化配置Git用户信息时,设置了用户密码 解决方式:重置用户密码,并设置为空 $ ssh-keygen -p Enter file in which the key is (/c/Users ...
- 从资源闲置到弹性高吞吐,JuiceFS 如何构建 70GB/s 吞吐的缓存池?
AI 模型的训练与推理对存储系统提出了极为严苛的要求,特别是在高吞吐.高并发以及对海量小文件的高效处理方面,已成为三大主要挑战.尽管基于 Lustre 或 GPFS 的并行文件系统具备出色的性能,但其 ...
- rp 不守恒定律
kid sama,终究还是,有缘无份. 我一个普普通通高中学生,上午勤勤恳恳在图书馆写了15pages物理,下午老老实实看了名柯首映,礼礼貌貌收了朋友的礼物,如此圆满一日,为何总要峰回路转,将我一箱礼 ...