GetTickCount函数

时间:2010-08-10 20:11:48

标签: c time gettickcount

我对GetTickCount函数有疑问, 我在我的代码中有两个调用此函数的函数,它们之间有几个命令,两个调用中的函数都返回相同的计数。 即。

var1 = GetTickCount();
code
:
:
var2 = GetTickCount();

var1和var2中的值相同。

有人可以帮忙吗?

6 个答案:

答案 0 :(得分:16)

假设这是Windows GetTickCount电话,那是完全合理的:

  

GetTickCount的分辨率   功能仅限于分辨率   系统计时器,是   通常在10的范围内   毫秒到16毫秒。

请注意,它只是开始测量毫秒 - 而且这些天你可以在毫秒内完成很多工作。

文档继续说:

  

如果您需要更高分辨率的计时器,   使用multimedia timer或a   high-resolution timer

或许QueryPerformanceCounter更合适?

答案 1 :(得分:6)

如果您指的是Windows API调用,请阅读this。 我猜你是想尝试一个短暂的间隔,所以这段是相关的。你是否计划了比这段时间短的东西?如果是这样,可能会查看QueryPerformanceCounter。

  

GetTickCount的分辨率   功能仅限于分辨率   系统计时器,是   通常在10的范围内   毫秒到16毫秒。该   GetTickCount的分辨率   功能不受影响   由...做出的调整   GetSystemTimeAdjustment函数。

答案 2 :(得分:5)

如果您使用QueryPerformanceCounter路由,则需要注意依赖于硬件的wierdness。已经有一段时间了,所以我不知道这种事情是否还会发生。

您可能还需要look at this link,因为它有一个很好的示例应用程序,可以比较QueryPerformanceCounter,GetTickCount和TimeGetTime

答案 3 :(得分:2)

来自MSDN

  

GetTickCount的分辨率   功能仅限于分辨率   系统计时器,是   通常在10的范围内   毫秒到16毫秒。该   GetTickCount的分辨率   功能不受影响   由...做出的调整   GetSystemTimeAdjustment函数。

     

经过的时间存储为DWORD   值。因此,时间会结束   如果系统运行,则大约为零   连续49.7天。避免   这个问题,请使用GetTickCount64   功能。否则,检查一下   比较溢出条件   次。

     

如果您需要更高分辨率的计时器,   使用多媒体计时器或   高分辨率计时器。

答案 4 :(得分:1)

GetTickCount的分辨率为1毫秒(实际上,它是几毫秒)。你之间调用的函数很可能花费不到1毫秒。

答案 5 :(得分:-2)

dwStartTimer=GetTickCount();
dwEndTimer=GetTickCount();
while((dwEndTimer-dwStartTimer)<wDelay)//5000 milli seconds delay
{
    Sleep(200);
    dwEndTimer=GetTickCount();
    if (PeekMessage (&uMsg, NULL, 0, 0, PM_REMOVE) > 0) //Or use an if statement
    {
        TranslateMessage (&uMsg);
        DispatchMessage (&uMsg);
    }
}