当前位置: 首页 > 面试题库 >

如何测量Java中经过的时间?

李博达
2023-03-14
问题内容

我想要这样的东西:

public class Stream
{
    public startTime;
    public endTime;

    public getDuration()
    {
        return startTime - endTime;
    }
}

同样重要的是,例如,如果startTime为23:00,endTime为1:00,则持续时间为2:00。

为了在Java中完成此操作,应使用哪些类型?


问题答案:

不幸的是,到目前为止发布的十个答案中没有一个是正确的。

如果要测量经过的时间,并且希望它是正确的,则必须使用System.nanoTime()。你不能使用System.currentTimeMillis(),除非你不介意结果错误。

的目的nanoTime是测量经过的时间,目的currentTimeMillis是测量挂钟时间。你不能将一个用于其他目的。原因是没有一台计算机的时钟是完美的。它总是漂移,偶尔需要校正。这种校正可能是手动进行的,或者对于大多数机器而言,有一个进程在运行,并不断对系统时钟(“挂钟”)进行小的校正。这些往往经常发生。每当有leap秒时,就会发生另一种此类校正。

由于nanoTime的目的是测量经过的时间,因此不受任何这些小的校正的影响。这就是你要使用的。当前正在进行的任何计时currentTimeMillis都会关闭-甚至可能为负。

你可能会说:“这听起来似乎并没有那么重要”,对此我也许没有说,但是总的来说,正确的代码难道不比错误的代码好吗?此外,nanoTime反正较短。

以前发布的关于nanoTime通常只有微秒精度的免责html" target="_blank">声明是有效的。同样,根据情况(另一个环境可能需要花费一个多微秒的时间来调用),因此不要期望正确地计时非常小的间隔。



 类似资料:
  • 问题内容: 我有一个10和20问题游戏。我需要计算用户完成游戏需要花费多少时间。 我用它来停止计数器: 现在我需要两件事: 一种如何计算经过时间并将其存储在变量中的方法 我需要最终值是两倍,例如最终得分是:15.49秒。 问题答案: 游戏开始时: 游戏结束时:

  • 问题内容: 我想要的是开始在代码中的某个地方开始计时,然后获取经过的时间,以衡量执行少量功能所花费的时间。我认为我使用的timeit模块错了,但是文档对我来说很混乱。 问题答案: 使用代替。前者会自动在你的平台和Python版本上提供最佳时钟:

  • 问题内容: 我们如何衡量在Swift中运行一个函数所花费的时间?我试图以这种方式显示经过的时间:“经过的时间为.05秒”。看到在Java中,我们可以使用System.nanoTime(),Swift中有可用的等效方法来实现这一点吗? 请看一下示例程序: 问题答案: 这是我编写的用于测量Swift中的Euler问题的Swift函数 从Swift 3开始,Grand Central Dispatch现

  • 问题内容: 有没有一种简单的方法/模块可以 正确 测量python中的经过时间?我知道我可以简单地打电话两次并取差额,但是如果更改系统时间,那将产生错误的结果。当然,这种情况很少发生,但这确实表明我在衡量错误的事情。 考虑到持续时间时,使用它来衡量是难以置信的。您将两个绝对时间测量值的差值反过来由持续时间测量值(由计时器执行)和已知的绝对时间(手动设置或通过ntp设置)构成,而您根本不感兴趣。 因

  • 问题内容: 我是Android编程的新手,所以请您为我的问题提供帮助。我正在尝试以秒/毫秒为单位测量MouseEvent.ACTION_DOWN和MouseEvent.ACTION_UP之间的时间。 我的问题实际上是因为seconds变量没有显示我想要的内容,我什至不知道它的测量结果是否正确,对于上面的示例,持续时间为16545(???!?!?) -3秒。我该怎么做才能在两个MotionEvent

  • 问题内容: 使用python中的Time模块,可以测量经过的时间吗?如果是这样,我该怎么做? 我需要这样做,以便如果光标在小部件中已存在一定时间,则会发生事件。 问题答案: 您还可以编写简单的装饰器来简化各种功能的执行时间的度量: 用法: 您可以同时分析多个功能。然后要打印测量值,只需调用print_prof_data():