jjzjj

timeGetTime

全部标签

windows - 为什么 GetTickCount 和 timeGetTime 的分辨率不同?

默认情况下,GetTickCount和timeGetTime具有相同的分辨率--15.625ms,但在我调用timeBeginPeriod(1)后,GetTickCount仍然每15.625ms更新一次,而timeGetTime确实每1ms更新一次,这是为什么?在Buginwaitabletimers?,作者提到:我想知道:为什么GetTickCount和timeGetTime来自同一个RTC,却有两种分辨率?谢谢! 最佳答案 我认为OP在定时器、中断和定时器滴答之间混淆了。量子间隔是定时器滴答周期。这是以18.2ticks/sec

c++ - 计时器精度 : c clock( ) vs. WinAPI 的 QPC 或 timeGetTime( )

我想描述软件计时器的准确性。我不太关心它有多准确,但确实需要知道准确度是多少。我研究了c函数clock()和WinAPI的函数QPC和timeGetTime,我知道它们都依赖于硬件。我正在测量一个可能需要大约5-10秒的过程,我的要求很简单:我只需要0.1秒的精度(分辨率)。但我确实需要知道最坏情况下的准确度。虽然更高的准确性是首选,但我宁愿知道准确性很差(500毫秒)并解释它,也不愿相信准确性更好(1毫秒)但无法记录它。有人对如何表征软件时钟精度有什么建议吗?谢谢 最佳答案 您需要区分准确性、分辨率和延迟。clock()、GetT

c++ - 将线程移植到 Windows。关键部分非常慢

我正在将一些代码移植到Windows中,发现线程处理速度极慢。该任务在Windows上需要300秒(使用两个至强E5-26708核2.6ghz=16核),在Linux上需要3.5秒(至强E5-16074核3ghz)。使用vs2012express。我有32个线程都在调用EnterCriticalSection(),弹出一个std::stack的80字节作业,LeaveCriticalSection并做一些工作(总共250k个作业)。在每次关键部分调用之前和之后,我都会打印线程ID和当前时间。单线程锁等待时间~160ms将作业从堆栈中弹出大约需要3毫秒调用leave需要大约3毫秒这项工作

c++ - 避免循环的 timeGetTime 的最佳替代品是什么?

timeGetTime查询系统时间似乎很好。但是,它的返回值仅为32位,因此它大约每49天回绕一次。在调用代码中检测翻转并不难,但它增加了一些复杂性,并且(更糟的是)需要保持状态。timeGetTime有替代品吗?那不会有这个环绕问题(可能通过返回64位值),并且具有大致相同的精度和成本? 最佳答案 除非您需要为超过49天的事件计时,您可以安全地忽略环绕。只需始终从当前timeGetTime()中减去之前的timeGetTime(),您将始终获得准确的增量测量时间,即使在回绕过程中也是如此——前提是您正在为事件计时其总持续时间少于4