Java运行时间计算的方法是什么?现在动力节点小编为大家介绍一些在 Java 中执行经过时间计算的主要方法。对Java感兴趣的小伙伴也可以关注一下Java在线学习,里面的课程内容从入门到精通,相信对大家的学习一定会有所帮助的。
我们从一个简单但通常不正确的解决方案开始我们在 Java 中测量经过时间的方法列表。首先,我们将展示一个如何执行计算的快速示例,然后我们将解释代码:
长启动=系统。当前时间米利斯();// 一段时间过去了long end = System . 当前时间米利斯();long elapsedTime =结束-开始;
在上面的示例中,我们使用“System.currentTimeMillis()”静态方法。该方法返回一个 long 值,它指的是自 1970 年 1 月 1 日以来的毫秒数,以 UTC 表示。那么,为什么这个解决方案有问题呢?
您从差异中得到的结果可能不准确,因为该方法测量的是我们所说的“挂钟时间”。这意味着它可能因多种原因而发生变化,包括系统时钟甚至闰秒的变化。
因此,简而言之,如果您需要高精度,则应避免使用 currentTimeMillis() 方法来计算经过时间。
现在让我们看看另一种计算经过时间的方法。我们将首先注意到该示例,然后对其进行评论。
长启动=系统。纳米时间();// 一段时间过去了long end = System . 纳米时间();long elapsedTime =结束-开始;
如您所见,代码看起来很像前面示例中的代码。唯一的区别是现在我们使用的是“nanoTime()”方法而不是“currentTimeMillis()”。那么,这两种方法有什么区别呢?
第一个显着的区别是“nanoTime()”,顾名思义,以纳秒为单位返回结果。根据文档,我们可以看到其返回值的来源是 JVM(Java 虚拟机)的高分辨率时间源。
该文件还强调了其他一些重要事实。第一个是您只能使用这种方法来计算经过的时间。换句话说,方法返回的值没有意义,因为它与任何时间系统都没有关系。
使用此方法时要记住的另一件重要事情是,虽然它提供纳秒级精度,但不一定提供纳秒级分辨率。这里的“分辨率”是指更新值的频率。
最后,请记住该方法不是线程安全的。
现在,我们将通过介绍 Apache Commons Lang API 提供的 StopWatch 类将重点转向库。让我们看一个简单的例子:
秒表手表=新的秒表();
观看。开始();// 调用你想要对
watch进行基准测试的方法。停止();长结果=观看。获取时间();
从上面的代码可以看出,StopWatch 的使用非常简单。您可以通过调用“start()”方法开始计时。然后你做你需要执行的任何任务。之后,您就可以调用“stop()”,然后调用“getTime()”,它将返回以毫秒为单位的经过时间。请记住,此类呈现时间耦合。例如,这意味着您不能停止尚未启动的时钟或启动已经运行的时钟。尝试这样做将导致抛出异常。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习