[英]System.currentTimeMillis() is not accurate on windows XP?
[英]How accurate of System.currentTimeMillis on winxp with other language than Java?
从这个问题System.currentTimeMillis()在Windows XP上不正确吗? 我知道在Windows XP上,使用Java的时间间隔是15ms或16ms。
但这仅仅是Java的问题吗? 如果使用C / C ++ / Python,是否可以在Windows XP上获得更准确的时间间隔?
无论哪种语言,大多数时间功能都会遇到此问题。 这包括GetTickCount
和为您提供当前时间的函数。
可以使用timeBeginPeriod
将间隔减少到1ms,但这会产生全局影响,并且会增加功耗。 因此,应尽可能避免。
有QueryPerformanceCounter
API支持高精度计时,但是它有其自身的问题,例如某些(嵌入式)硬件上的多个内核之间不同步。
这与语言没有多大关系!
它必须完成所使用功能的实现方式……这又与您使用的OS中的API(不同的API函数可能具有不同的精度)以及运行的硬件(不同的CPU /芯片组)有关可以展示不同的方式和不同的准确性)...
这可能是操作系统问题,因此在以相同方式与操作系统内核连接的任何语言中都将是相同的。
我不知道Windows(从未使用过Windows),但是在Linux系统上,它取决于内核和配置参数,例如CONFIG_HIGH_RES_TIMERS
等。
有传言说Windows在这些问题上比Linux差得多。
也许您可以尝试GNU / Linux? 这始终是一种有趣的体验,最重要的是,它是免费软件 ,这意味着您可以学习并改进它。 上次检查时,Windows没有此属性(这就是为什么我不使用它)的原因。
您可以将时间基于nanoTime而不是毫秒。 Millis的问题是,在某些系统上,时钟每小时可能漂移多达10毫秒,而Windows仅每周进行一次NTP同步。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.