java程序运行时间统计

更新时间:2023-06-11 09:37:58 阅读: 评论:0

java程序运⾏时间统计
⼀、简单⽅法
1.1 System.currentTimeMillis()
long start = System.currentTimeMillis();
// 业务逻辑代码...
long end = System.currentTimeMillis();
long timeElapd = finish - end;// 单位为毫秒
System.currentTimeMillis()记录的是系统当前时间(Wall-clock Time)距离1970-1-1 00:00:00流逝的时间,单位是毫秒。系统当前时间具体什么意思呢,就是你操作系统中的时间。currentTimeMillis()并不是精确到1ms,⽽是跟操作系统具体实现有关。使⽤这个⽅法会存在问题,因为系统时间是可以随时调节的。⽐如:
⽤户⼿动调节系统时间;
系统⾃动根据时间服务器调节时间;
有些有冬令时、夏令时的地区会⾃动调节时间;
闰秒(Leap conds),这个闰秒曾经导致很多系统挂掉。
所以这种⽅法如果⽤在开发阶段粗略估计时间是没有问题的,但是如果⽤到⽣产环境,就会存在很⼤的风险。
1.2 System.nanoTime()
nanoTime()与currentTimeMillis()正好相反,与系统时间完全⽆关,⽬的也正是⽤来统计程序耗时的。nanoTime()记录的是从某个固定的时刻起,到现在经过了多少纳秒。但是这个固定的时刻不是Unix时间戳的1970-1-1 00:00:00,⽽是启动虚拟机时⽣成的⼀个固定时刻,每个虚拟机的⽣成的这个时间都是不同的。
nanoTime()虽然精确到纳秒,但事实并不是每纳秒都跳动⼀格,⽽是可能在3纳秒之后,⼀下跳动3格。不过可以保证的是⾄少能跟currentTimeMillis()⼀样精确。
使⽤nanoTime()的统计⽅法跟currentTimeMillis()⼀样,如下:
long start = Time();
// 业务逻辑代码...
long end = Time();
long timeElapd = finish - end;// 单位为纳秒
⼆、Java8以上
Java8以上定义了新的万年历,基于Java epoch,把⼀天精准地分为86400秒。使⽤新的Instant⽅法如下:
Instant start = w();
// 业务逻辑代码...
Instant end = w();
long timeElapd = Duration.between(start, finish).toMillis();// 单位为毫秒
三、第三⽅库StopWatch
StopWatch是Apache Commons Lang库内的⼀部分。可以⽤来⽅便地进⾏计时。
⾸先添加maven库:
<dependency>
<groupId>org.apachemons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
代码:
StopWatch watch = new StopWatch();
watch.start();
// 业务逻辑代码...
watch.stop();
System.out.println("Time Elapd: " + Time() + "ms"); // 单位为毫秒

本文发布于:2023-06-11 09:37:57,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/168644747872169.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:java程序运行时间统计.doc

本文 PDF 下载地址:java程序运行时间统计.pdf

下一篇:返回列表
标签:时间   系统   调节   问题   存在
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|