繁体   English   中英

与Java以外的其他语言在winxp上System.currentTimeMillis的准确性如何?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM