准确性 VS 精度
我想知道在更新游戏中对象的位置时,是否应该使用 System.currentTimeMillis() 还是 System.nanoTime()?它们的运动变化与自上次调用以来经过的时间成正比,而我希望尽可能精确。
我读到不同操作系统之间存在一些严重的时间分辨率问题(即 Mac / Linux 几乎具有 1 毫秒的分辨率,而 Windows 则具有 50 毫秒的分辨率?)。我主要在 Windows 上运行我的应用程序,50 毫秒的分辨率似乎相当不准确。
除了我列出的两个选项外,还有更好的选择吗?
有什么建议/评论吗?
nanoTime
通常比currentTimeMillis
更准确,但是也是一个相对昂贵的调用。currentTimeMillis()
运行在几个(5-6)CPU时钟内,而nanoTime
取决于底层架构,可能需要100多个CPU时钟。 - bestsssSystem.currentTimeMillis()
方法的内部运作机制:http://pzemtsov.github.io/2017/07/23/the-slow-currenttimemillis.html - Attila Tanyi