我应该使用哪种计时方法来衡量时间的变化

时间:2018-05-18 16:02:45

标签: windows vba performance

在深入研究VBA benchmarkingsee also)后,我对这些答案的详细信息不满意。从Go中类似的question about timing,我看到测量绝对时间和时间变化之间存在差异。对于绝对时间,应使用“挂钟”,可以使用网络时间协议在机器之间同步,例如

同时应使用“Monatonic Clocks”来测量时间差异,因为它们不受闰秒或(根据相关的回答)时钟频率的变化。

我做对了吗?还有什么需要考虑的吗? 假设这些定义是正确的,这些时钟属于哪个类别,或者换句话说,这些时钟中的哪一个将为我提供最准确的时间变化测量:

  • VBA Time
  • VBA Timer
  • WinApi GetTickCount
  • WinApi GetSystemTimePreciseAsFileTime
  • WinApi QueryPerformanceFrequency + QueryPerformanceCounter

还是别的什么?

我可能会忽视其他方法。我说这是因为有些语言如Java get time in nanoseconds而不是微秒,这怎么可能?当然,Windows Api将利用最精确的硬件计时器,它可以提供微秒级的分辨率。什么是Java,我可以复制它吗?

PS,我不知道如何标记,请按您的意愿添加

1 个答案:

答案 0 :(得分:0)

QueryPerformanceFrequencyQueryPerformanceCounter将为您提供最高分辨率的计时器。它们基本上包装了rtdsc指令,该指令计算经过的CPU周期。