我正在编写的软件需要微秒分辨率或更好的时间戳。我打算使用System.currentTimeMillis结合System.nanoTime有点像这样,尽管它只是一个粗略的代码草图:privatestaticfinallongabsoluteTime=(System.currentTimeMillis()*1000*1000);privatestaticfinallongrelativeTime=System.nanoTime();publiclonggetTime(){finallongdelta=System.nanoTime()-relativeTime;if(deltananoT
出于诊断目的,我希望能够在长时间运行的服务器应用程序中检测系统时钟的变化。由于System.currentTimeMillis()基于挂钟时间,而System.nanoTime()基于独立于(*)挂钟时间的系统定时器,我以为我可以使用这些值之间差异的变化来检测系统时间变化。我编写了一个快速测试应用程序,以查看这些值之间的差异有多稳定,令我惊讶的是,这些值立即以每秒几毫秒的水平出现差异。有几次我看到了更快的分歧。这是在带有Java6的Win764位桌面上。我还没有在Linux(或Solaris或MacOS)下尝试过这个测试程序来查看它的性能。对于此应用程序的某些运行,差异是正的,对于某些
System.nanoTime()的文档说以下(强调我的)。Thismethodcanonlybeusedtomeasureelapsedtimeandisnotrelatedtoanyothernotionofsystemorwall-clocktime.Thevaluereturnedrepresentsnanosecondssincesomefixedbutarbitrarytime(perhapsinthefuture,sovaluesmaybenegative).Thismethodprovidesnanosecondprecision,butnotnecessarilyna
我知道System.nanoTime()现在是在System.currentTimeInMillis()上测量时间的首选方法。第一个明显的原因是nanoTime()提供了更精确的计时,另一个原因是我读到后者受系统实时时钟调整的影响。“受系统实时时钟影响”是什么意思? 最佳答案 在这种情况下,我发现以下博客文章摘录很有用:IfyouareinterestedinmeasuringabsolutetimethenalwaysuseSystem.currentTimeMillis().Beawarethatitsresolutionmay
准确性对比。精度我想知道在我的游戏中更新对象的位置时,我应该使用System.currentTimeMillis()还是System.nanoTime()?他们的运动变化与自上次通话后耗时成正比,我希望尽可能精确。我了解到不同操作系统之间存在一些严重的时间分辨率问题(即Mac/Linux的分辨率几乎为1毫秒,而Windows的分辨率为50毫秒??)。我主要在Windows上运行我的应用程序,50毫秒的分辨率似乎非常不准确。还有比我列出的两个更好的选择吗?有什么建议/意见吗? 最佳答案 如果您只是在寻找对耗时的极其精确的测量,请使用S