2019年3月28日 星期四

BCB / C++ 時間相關函式




1. time :

精度只到秒,這應是最不準的計時器。

2. clock:

精度為 1/CLOCKS_PER_SEC,大多系統 CLK_TCK 為 1000,故精度為毫秒。


3. GetTickCount:

呼叫此函式時,將傳回從系統開機至當時經過多少毫秒,由於傳回值為DWORD,故最多只能計時 49.7 天

4. timeGetTime: 

此函式與 GetTickCount 解釋並無不同,但有一說 timeGetTime 精度較 GetTickCount 高,也有一說此函式實際精度只到 50ms,待查證。

5. QueryPerformanceCount / QueryPerformanceFrequency:

這應是目前精度最高之函式,精度達微秒,但在 MSDN 上亦註明,此函式若硬體不支援,將只傳回 1000,再用 GetTickCount 代替它 (如果我沒意會錯的話應為如此)。使用此函式時將較耗資源。


6. GetSystemTimeAsFileTime:

這方法較少見。FILETIME 結構體為兩個 32 位元之 unsigned integer,一個是 high , 一個是 low,所代表意義為,從 1601 年 1 月 1 日至現在時間經過了多少個 (100 ns)。精度與準度待查證。



windows平台时间函数性能比较QueryPerformanceCounter,GetTickCount,ftime,time,GetLocalTime,GetSystemTimeAsFileTime


 實際的Code,使用BCB6.0在我的i7電腦上跑出來數據如下:

沒有留言: