在日常写代码的过程中,通常会记录某一段程序的运行时间,使用的方式是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的更多相关文章

  1. Spring AOP实例——异常处理和记录程序执行时间

    实例简介: 这个实例主要用于在一个系统的所有方法执行过程中出线异常时,把异常信息都记录下来,另外记录每个方法的执行时间. 用两个业务逻辑来说明上述功能,这两个业务逻辑首先使用Spring AOP的自动 ...

  2. java查看程序执行时间

    public static void main(String[] args) { long a= System.currentTimeMillis();//获取当前系统时间(毫秒) for (int ...

  3. java获取程序执行时间

    第一种是以毫秒为单位计算的. //伪代码 long startTime=System.currentTimeMillis(); //获取开始时间 doSomeThing(); //测试的代码段 lon ...

  4. QElapsedTimer定时器记录程序执行时间

    QElapedTimer类提供了一种快速计算运行时间的方法,从Qt4.7引入. QElapsedTimer类通常用于快速计算两个事件之间经过了多少时间.它的API与QTime相似,因此可以将正在使用的 ...

  5. 在 NetBeans IDE 6.0 中分析 Java 应用程序性能

    NetBeans IDE 6.0 包含一个强大的性能分析工具,可提供与应用程序运行时行为有关的重要信息.通过 NetBeans 性能分析工具,我们可以方便地在 IDE 中监控应用程序的线程状态.CPU ...

  6. .Net Core实现记录接口执行时间的中间件

    项目中有时接口访问时间过长,但是通过浏览器F12查看时,接口访问时间很正常,所以就很奇怪,于是写一个中间件,记录所有接口访问时间的中间件. 一.中间件 中间件是应用程序处理管道中的组件,用来处理请求和 ...

  7. 软件性能测试分析与调优实践之路-Java应用程序的性能分析与调优-手稿节选

    Java编程语言自从诞生起,就成为了一门非常流行的编程语言,覆盖了互联网.安卓应用.后端应用.大数据等很多技术领域,因此Java应用程序的性能分析和调优也是一门非常重要的课题.Java应用程序的性能直 ...

  8. Linux学习心得之 jnlp的文件和java应用程序安全设置

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 jnlp的文件和java应用程序安全设置 1.前言2. jnlp的文件打开3.java应用程 ...

  9. java\c程序的内存分配

    JAVA 文件编译执行与虚拟机(JVM)介绍 Java 虚拟机(JVM)是可运行Java代码的假想计算机.只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该 ...

  10. C# 统计程序执行时间

    随便写写,小马哥勿怪 最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷.     话说马云年轻的时候也是屌丝一枚,有图为证 现 ...

随机推荐

  1. 知网下载 pdf 而不是caj

    简介 主要通过F12实现 第一步 按下F12 CAJ全文下载 第二步 将 http://search.cnki.net/down/default.aspx?filename=2004072993.nh ...

  2. SciTech-Statistics-英语授课:Business Statistics商务统计

    What Is a Population Parameter? By Alane Lim, Alane Lim, Science Expert Ph.D., Materials Science and ...

  3. SciTech-Mathematics-Probability+Statistics-Discrete Binomial Distribution: 离散二项式分布

    Binomial Distribution AI, Data Science, and Statistics Statistics and Machine Learning Toolbox Proba ...

  4. Rust:axum学习笔记(3) extract 

    接上一篇继续,今天学习如何从Request请求中提取想要的内容,用axum里的概念叫Extract. 预备知识:json序列化/反序列化 鉴于现在web开发中,json格式被广泛使用,先熟悉下rust ...

  5. 深度解答:win11系统中大家最关心的5个问题

    今天,深度技术就来解答一下几个大家讨论比较多的问题,分享一下经验和感受,希望对想要升级win11系统的小伙伴有一些帮助. 01.你的设备能升级win11系统吗? 目前,微软对Win 11的升级限制主要 ...

  6. Win10系统怎么打开everyone权限的问题

    很多电脑基地的小伙伴都不知道everyone权限是什么吧?everyone是针对电脑的每个用户的权限,一旦涉及到系统权限操作务必要慎重选择,稍微不对及有可能引起系统故障.everyone权限是最高的用 ...

  7. [SWPUCTF 2021 新生赛]pop

    题目源码 <?php error_reporting(0); show_source("index.php"); class w44m{ private $admin = ' ...

  8. git使用每次输入密码问题

    原因:在初始化配置Git用户信息时,设置了用户密码 解决方式:重置用户密码,并设置为空 $ ssh-keygen -p Enter file in which the key is (/c/Users ...

  9. 从资源闲置到弹性高吞吐,JuiceFS 如何构建 70GB/s 吞吐的缓存池?

    AI 模型的训练与推理对存储系统提出了极为严苛的要求,特别是在高吞吐.高并发以及对海量小文件的高效处理方面,已成为三大主要挑战.尽管基于 Lustre 或 GPFS 的并行文件系统具备出色的性能,但其 ...

  10. rp 不守恒定律

    kid sama,终究还是,有缘无份. 我一个普普通通高中学生,上午勤勤恳恳在图书馆写了15pages物理,下午老老实实看了名柯首映,礼礼貌貌收了朋友的礼物,如此圆满一日,为何总要峰回路转,将我一箱礼 ...