有時候, 你會想知道程式的執行時間, 如果你想使用 GetSystemTime 來計算執行時間, 那麼你必須面對 SystemTime, FileTime 轉來轉去, 還要處理 64 bit 的整數相減的問題, 所以好用的東西, 一種就夠了.
下面是我以前的教學網頁的一個範例: 使用的 function 是 QueryPerformanceCounter()
// 取得目前 CPU frequency
LARGE_INTEGER m_liPerfFreq={0};
QueryPerformanceFrequency(&m_liPerfFreq);
// 取得執行前時間
LARGE_INTEGER m_liPerfStart={0};
QueryPerformanceCounter(&m_liPerfStart);
hr = your_function (pSample);
// 取得執行後的時間
LARGE_INTEGER liPerfNow={0};
QueryPerformanceCounter(&liPerfNow);
// 計算出 Total 所需要的時間 (millisecond)
long decodeDulation=( ((liPerfNow.QuadPart - m_liPerfStart.QuadPart) * 1000)/m_liPerfFreq.QuadPart);
TCHAR buffer[100];
wsprintf(buffer,"執行時間 %d millisecond ",time);
MessageBox(NULL,buffer,"計算時間",MB_OK);
如果想要知道更多時間相關的 Win32 知識, 請參考下面網址
http://mqjing.twbbs.org.tw/~ching/Course/AdvancedC++Course/__Page/02Process_Thread/page.html
by Jing
沒有留言:
張貼留言