0

我在 JVM/Linux 上有一个生产系统,它依赖于System.nanoTimeSystem.currentTimeMillis. 我之前遇到过 NTP 完全搞砸了转换的情况,因此时钟的运行速度比实时快得多或慢得多(并且转换会影响上述两种 Java 方法)。

我怎样才能最好地监控它nanoTimecurrentTimeMillis以接近正确的速度运行?我想定期测量这些方法中的增量,并将它们与同一时期的“已知”增量进行比较。什么是“已知”增量的可靠来源?C/C++ 解决方案很好。

4

1 回答 1

0

可靠的时间来源,尤其是在 VM 上,必须在机器外部。我假设您无法使用专门的硬件(如原子钟或 GPS 接收器),因此您的下一个最佳选择是 NTP。找到您附近的 NTP 服务器,通过系统时钟获取“之前”时间,通过 NTP 获取时间,然后读取时钟“之后”。将“之前”和“之后”的平均值与 NTP 值之间的差异进行比较。您不应该期望差异为零(您的网络延迟可能在两个方向上都不相同,等等)。随着时间的推移监控差异。我预计变化会降低趋势,但如果您看到趋势增加(或减少)并有任何程度的信心,那么您可能有一个混乱的时钟。

于 2012-12-06T21:28:45.507 回答