Java中怎么计算一段程序的运行时间(java,开发技术)

时间:2024-04-29 21:12:26 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    Java%E4%B8%AD%E6%80%8E%E4%B9%88%E8%AE%A1%E7%AE%97%E4%B8%80%E6%AE%B5%E7%A8%8B%E5%BA%8F%E7%9A%84%E8%BF%90%E8%A1%8C%E6%97%B6%E9%97%B4

介绍了两种方法,一种是毫秒级别的计算,另一种是更精确的纳秒级别的计算。

写代码特别是完成一些对时间要求比较高的任务时,我们经常需要统计程序运行时间。整体思路当然很简单,在程序开启和结束后分别记录当前时间,两者相减,就得到了程序运行时间。以下介绍一些常见方法,具体使用情况可以根据项目需要选择。

1.1 System.currentTimeMillis()

大家第一印象肯定想到的是System.currentTimeMillis()。没错!这个可以用来做最简单的时间统计。

System.currentTimeMillis()记录的是系统当前时间(Wall-clock Time)距离1970-1-1 00:00:00流逝的时间,单位是毫秒。系统当前时间具体什么意思呢,就是你操作系统中的时间。currentTimeMillis()并不是精确到1ms,而是跟操作系统具体实现有关。使用这个方法会存在问题,因为系统时间是可以随时调节的。比如:

用户手动调节系统时间;

系统自动根据时间服务器调节时间;

有些有冬令时、夏令时的地区会自动调节时间;

闰秒(Leap seconds),这个闰秒曾经导致很多系统挂掉。

所以这种方法如果用在开发阶段粗略估计时间是没有问题的,但是如果用到生产环境,就会存在很大的风险。

1.2 System.nanoTime()

nanoTime()与currentTimeMillis()正好相反,与系统时间完全无关,目的也正是用来统计程序耗时的。nanoTime()记录的是从某个固定的时刻起,到现在经过了多少纳秒。但是这个固定的时刻不是Unix时间戳的1970-1-1 00:00:00,而是启动虚拟机时生成的一个固定时刻,每个虚拟机的生成的这个时间都是不同的。

nanoTime()虽然精确到纳秒,但事实并不是每纳秒都跳动一格,而是可能在3纳秒之后,一下跳动3格。不过可以保证的是至少能跟currentTimeMillis()一样精确。

使用nanoTime()的统计方法跟currentTimeMillis()一样,如下:

Java8以上定义了新的万年历,基于Java epoch,把一天精准地分为86400秒。使用新的Instant方法如下:

StopWatch是Apache Commons Lang库内的一部分。可以用来方便地进行计时。

首先添加maven库:

然后代码中:

本文:Java中怎么计算一段程序的运行时间的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:电脑开机磁盘检查的原因是什么下一篇:

5 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18