<分区>
我想要这样的东西:
public class Stream
{
public startTime;
public endTime;
public getDuration()
{
return startTime - endTime;
}
}
同样重要的是,例如,如果开始时间为 23:00,结束时间为 1:00,则持续时间为 2:00。
在 Java 中使用哪些类型来实现这一点?
<分区>
我想要这样的东西:
public class Stream
{
public startTime;
public endTime;
public getDuration()
{
return startTime - endTime;
}
}
同样重要的是,例如,如果开始时间为 23:00,结束时间为 1:00,则持续时间为 2:00。
在 Java 中使用哪些类型来实现这一点?
最佳答案
不幸的是,到目前为止发布的十个答案中没有一个是完全正确的。
如果您要测量耗时,并且希望它正确,则必须使用 System.nanoTime()
。你不能使用 System.currentTimeMillis()
,除非你不介意你的结果是错误的。
nanoTime
的目的是测量经过的 时间,currentTimeMillis
的目的是测量挂钟 em>时间。您不能将其用于其他目的。原因是没有计算机的时钟是完美的;它总是漂移,偶尔需要纠正。这种更正可能是手动发生的,或者在大多数机器的情况下,有一个进程在运行并不断向系统时钟(“挂钟”)发出小的更正。这些往往会经常发生。每当有闰秒时,就会发生另一种此类修正。
由于 nanoTime
的目的是测量耗时,因此它不受任何这些小修正的影响。这是你想要使用的。当前使用 currentTimeMillis
进行的任何计时都将关闭 - 甚至可能是负数。
您可能会说,“这听起来好像真的没有那么重要”,我的回答是,也许不是,但总的来说,正确的代码不就是比不正确的代码好吗?此外,无论如何,nanoTime
都更短。
之前发布的关于 nanoTime
通常只有微秒精度的免责声明是有效的。此外,根据情况(其他情况也是如此),调用可能需要超过一微秒的时间,因此不要期望正确计时非常非常小的间隔。
关于java - 我如何测量 Java 中耗时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56155993/