本文首先通過QueryPerformanceFrequency獲取高精度計時器的時鍾頻率,然后通過兩次調用QueryPerformanceCounter獲取高精度計時器的差值,最后以差值除以時鍾頻率獲取精確計時。
但要注意,時鍾頻率及計時器的值均為LONGLONG類型,需轉換為double后才能計算精確的秒數。
以下為代碼:
LARGE_INTEGER frequency; LARGE_INTEGER start; LARGE_INTEGER stop; QueryPerformanceFrequency(&frequency); //獲取計時器的時鍾頻率 QueryPerformanceCounter(&start); //獲得計數器初始值 Sleep(10); //耗時操作(暫停10ms) QueryPerformanceCounter(&stop); //獲得計數器終止值 const auto interval = static_cast<double>(stop.QuadPart - start.QuadPart); const auto timeSpanSecond = interval / frequency.QuadPart; //獲取秒數 const auto timeSpanMillisecond = timeSpanSecond * 1000.0; //獲取毫秒數 std::cout << "Sleep(10) takes " << timeSpanMillisecond << "ms." << std::endl;
下面為結果: