我有一個關於GetTickCount函數的問題, 我有兩個調用這個函數的代碼,它們之間有幾個命令,兩個調用中的函數都返回相同的計數。 即GetTickCount函數
var1 = GetTickCount();
code
:
:
var2 = GetTickCount();
VAR1和VAR2在它具有相同的值。
有人可以幫忙嗎?
我有一個關於GetTickCount函數的問題, 我有兩個調用這個函數的代碼,它們之間有幾個命令,兩個調用中的函數都返回相同的計數。 即GetTickCount函數
var1 = GetTickCount();
code
:
:
var2 = GetTickCount();
VAR1和VAR2在它具有相同的值。
有人可以幫忙嗎?
假設這是在Windows GetTickCount呼叫,這是完全合理的:
所述的GetTickCount 函數的分辨率被限制爲系統計時器的分辨率 ,其是 通常在10 範圍毫秒到16毫秒。
請注意,這只是測量毫秒下手 - 你可以在毫秒這幾天做了一個可怕的很多。
該文檔繼續說:
如果需要更高的分辨率計時器, 使用multimedia timer或 high-resolution timer。
也許QueryPerformanceCounter
會更合適嗎?
@johan Skeet但這樣解決系統定時器意味着什麼? – RidaSana 2011-12-17 17:27:26
@小姐:你可以把它看作「有多頻繁的時鐘滴答」。 – 2011-12-17 18:18:44
如果您指的是Windows API調用,則請閱讀this。 我猜你正在嘗試時間很短的時間間隔,所以這一段是相關的。你計時比那個間隔短嗎?如果是這樣,也許可以查看QueryPerformanceCounter。
所述的GetTickCount 函數的分辨率被限制爲系統計時器的分辨率 ,其是 通常在10 毫秒到16毫秒的範圍內。 GetTickCount 函數的分辨率 不受 GetSystemTimeAdjustment函數作出的 調整。
GetTickCount的分辨率爲1毫秒(實際上,它是幾毫秒)。你所調用的函數很可能要花費1毫秒以內的時間。
實際上更糟糕:大約10ms的分辨率 – jdehaan 2010-08-10 20:15:34
從MSDN
所述的GetTickCount 函數的分辨率被限制爲系統計時器的分辨率 ,其是 通常在10 毫秒到16毫秒的範圍內。 GetTickCount 函數的分辨率 不受 GetSystemTimeAdjustment函數作出的 調整。
已用時間以DWORD 的值存儲。因此,如果系統連續運行 達49.7天,時間將會包圍 。要避免 這個問題,請使用GetTickCount64 函數。否則,當比較 次時,檢查 溢出情況。
如果您需要更高分辨率的定時器, 使用多媒體定時器或 高分辨率定時器。
如果轉到QueryPerformanceCounter路由,則需要注意依賴於硬件的wierdness。它已經有一段時間了,所以我不知道這些東西是否還會發生。
您可能還需要採取look at this link,因爲它具有比較QueryPerformanceCounter的,GetTickCount的和TimeGetTime
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);
}
}
請詳細解釋爲什麼您的代碼能夠回答這個問題。 – Markus 2017-08-31 07:23:23
一個很好的示例應用程序,這會很有幫助:http://capnbry.net/blog/?p= 44 – Ampere 2014-08-28 11:16:30