Questions tagged «nanotime»

15
System.nanoTime()完全没用吗?
如博客文章《当心 Java中的System.nanoTime()》所述,在x86系统上,Java的System.nanoTime()使用CPU专用计数器返回时间值。现在考虑以下情况,我用它来衡量通话时间: long time1= System.nanoTime(); foo(); long time2 = System.nanoTime(); long timeSpent = time2-time1; 现在,在多核系统中,可能是在测量了time1之后,将该线程调度到了另一个计数器,该计数器的计数器小于以前的CPU的计数器。因此,我们可以在time2中获得一个小于 time1的值。因此,我们将在timeSpent中得到一个负值。 考虑到这种情况,是不是System.nanotime到目前为止几乎没有用? 我知道更改系统时间不会影响纳米时间。那不是我上面描述的问题。问题在于,每个CPU自打开以来都会保留一个不同的计数器。与第一个CPU相比,该计数器在第二个CPU上可以更低。由于操作系统可以在获取time1之后将线程调度到第二个CPU,因此timeSpent的值可能不正确,甚至为负数。
153 java  nanotime 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.