1. 框架自帶方法
比如QT中QTime的靜態函數currentDate,獲取最小結果精度爲ms,精度取決於操作系統的API。比如該接口實現在Win下就是WINAPI GetLocalTime,精度仍然是ms級別的。
2. 操作系統API
其實很多,比如上面QT實現用到的GetLocalTime,WIn下的GetTickCount,以及這裏詳細說道的高精度時鐘QueryPerformanceFrequency/QueryPerformanceCounter,精度是微秒,這個就厲害了。我們進行代碼時間測量,和優化,一般會用這個接口。
使用方法:
LARGE_INTEGER liFreq;
QueryPerformanceFrequency(&liFreq);
LARGE_INTEGER liStart, liEnd;
QueryPerformanceCounter(&liStart);
// 要測試運行時間的代碼片段
// XXXX
QueryPerformanceCounter(&liEnd);
TRACE(__X("spend %f ms"), 1000.0 * (liEnd.QuadPart - liStart.QuadPart) / liFreq.QuadPart);
3 語言庫函數
C/C++等語言自帶的庫函數,比如localtime(QTime在linux下的實現依賴該C庫函數)。當然,庫函數可能是操作硬件實現,也有可能是利用API來實現的。