apache的时间监视器StopWatch

org.apache.commons.lang3.time.StopWatch。

在编程过程中,常常需要计算某段程序的运行时间,常见做法是在目标程序段的前后分别记录系统毫微秒时间,通过取差得到时间差,现在有一种更好的方式是:使用apache提供的StopWatch。

相对于System.currentTimeMillis(),StopWatch更加灵活,功能更加齐全完善,推荐使用此用法。

<!-- StringUtils、NumberUtils等工具类 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.10</version>
</dependency>

使用System.currentTimeMillis()获取程序运行时间

long startTime = System.currentTimeMillis();
//运行主程序
long endTime = System.currentTimeMillis();
System.out.println("程序运行时间: " + (endTime - startTime) + "ms");
//运行结果:程序运行时间: 0ms

使用StopWatch获取程序运行时间

//创建监视器并开启 相当于StopWatch watch = StopWatch.createStarted();
StopWatch watch = new StopWatch();
watch.start();

//记录运行时间
Thread.sleep(1000);
System.out.println("运行时间1:" + watch.getTime() + "ms");
//运行结果:运行时间1:1000 ms

//暂停1秒后恢复,记录运行时间
watch.suspend();
Thread.sleep(1000);//因为暂停了,因此此1秒不会计入监视器
watch.resume();
System.out.println("运行时间2:" + watch.getTime() + "ms");
//运行结果:运行时间2:1001 ms

//重置计时,记录运行时间
//重置后必须调start,否则会报错:Stopwatch is not running.
watch.reset();
watch.start();
Thread.sleep(1000);
System.out.println("运行时间3:" + watch.getTime() + "ms");
//运行结果:运行时间3:1000 ms

//设置切点
watch.split();
System.out.println("获取开始到最后一个切点的时间:" + watch.getSplitTime() + "ms");
//运行结果:获取开始到最后一个切点的时间:1000 ms

//停止
watch.stop();
Thread.sleep(1000);
System.out.println("开始到结束运行时间:" + watch.getTime() + "ms");
//运行结果:开始到结束运行时间:1000ms

 

posted @   残城碎梦  阅读(269)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
历史上的今天:
2022-11-27 Spring给我们提供了哪些扩展点
2021-11-27 说说hashCode() 和 equals() 之间的关系?
2021-11-27 说说Object类下面有几种方法呢?
2021-11-27 Redis中是如何实现分布式锁的?
2021-11-27 单例模式有几种写法?
2021-11-27 消息队列中,如何保证消息的顺序性?
2021-11-27 分库分表之后,id 主键如何处理?
点击右上角即可分享
微信分享提示