在Windows下生成时间戳的最便宜的方法

时间:2010-11-17 22:17:55

标签: windows performance timestamp

在Windows上为大量事件生成时间戳的最快方法是什么? 毫秒的分辨率很好。

显而易见的选项是GetLocalTime(),GetTickCount()甚至是QueryPerformanceCounter()。
哪些(或其他一些候选者)需要最少的时钟周期?

2 个答案:

答案 0 :(得分:1)

QueryPerformanceCounter()和GetTickCount()将为您提供自机器启动以来经过的时间,并且不会直接生成时间戳。理论上,您可以存储机器启动的时间并将其用作偏移量来获取当前时间,但是我不确定它的精确程度。

如果不需要毫秒精度,您还可以查看time()函数及其变体。它将为您提供自纪元以来经过的时间,以秒为单位。这应该非常快,并且可以以原始格式存储,直到您需要显示或操作它为止。

如果性能是您最关心的问题,那么您应该分析您提出的每个替代方案(最有可能使用QueryPerformanceCounter)并让它为您做出决定。我还认为时间戳函数的性能在大多数严肃的应用程序中可能并不重要,因此可能首先关注应用程序中更复杂的部分。

答案 1 :(得分:0)

最快的方法是使用x86指令RDTSC。它有几个缺点,所以请阅读文档。如果你不喜欢内联汇编,VS有一个内在的:__rdtsc()