windows下的精確計時函數

BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)獲取系統的計數器的頻率

BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)獲取計數器的值
(原文出處:coder_xia的博客:http://blog.csdn.net/coder_xia/article/details/6566708)

   然後用兩次計數器的差除以Frequency就得到時間。

測試程序如下:

[c-sharp] view plaincopy
  1. #include <iostream>  
  2. #include <windows.h>  
  3. using namespace std;  
  4. int main()  
  5. {  
  6.     LARGE_INTEGER m_nFreq;  
  7.     LARGE_INTEGER m_nBeginTime;  
  8.     LARGE_INTEGER nEndTime;  
  9.     QueryPerformanceFrequency(&m_nFreq); // 獲取時鐘週期  
  10.     QueryPerformanceCounter(&m_nBeginTime); // 獲取時鐘計數  
  11.     Sleep(100);  
  12.     QueryPerformanceCounter(&nEndTime);  
  13.     cout << (double)(nEndTime.QuadPart-m_nBeginTime.QuadPart)*1000/m_nFreq.QuadPart << endl;  
  14. }  
 

需要注意的就是結果需要強制轉換爲double,不然會得到如下錯誤:<< is ambiguous


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章