C++精確計時


本文首先通過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;

下面為結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM