我对GetTickCount函数有疑问, 我在我的代码中有两个调用此函数的函数,它们之间有几个命令,两个调用中的函数都返回相同的计数。 即。
var1 = GetTickCount();
code
:
:
var2 = GetTickCount();
var1和var2中的值相同。
有人可以帮忙吗?
答案 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);
}
}