c++\MFC測試程式碼的執行時間
有時候需要測試某段程式碼的執行時間,在Windows平臺下可以嘗試以下幾種方法:
方法一 利用GetTickCount函式(ms)
程式碼:CString str;
long t1=GetTickCount();//程式段開始前取得系統執行時間(ms)
。。。。。。//to do sth
long t2=GetTickCount();//程式段結束後取得系統執行時間(ms)
str.Format("time:%dms",t2-t1);//前後之差即程式執行時間
AfxMessageBox(str);
方法二 利用C/C++計時函式(s)
程式碼:
#include "time.h"
clock_t start, finish;
start = clock();
。。。。。。//to do sth
finish = clock();
printf("%f seconds\n",(double)(finish-start)/CLOCKS_PER_SEC);
VC/MFC中計算程式執行時間
程式碼:
CString str;
//獲取系統時間
CTime tm;
tm=CTime::GetCurrentTime();
str=tm.Format("現在時間是%Y年%m月%d日 %X");
AfxMessageBox(str);
方法四 利用GetLocalTime類 獲取系統時間
程式碼:
SYSTEMTIME st;CString strDate,strTime;
GetLocalTime(&st);
strDate.Format("M----",st.wYear,st.wMonth,st.wDay);
strTime.Format("-:-:-",st.wHour,st.wMinute,st.wSecond);
AfxMessageBox(strDate);
AfxMessageBox(strTime);
方法五 利用計數器QueryPerformanceFrequency,QueryPerformanceCounter測試程式碼執行時間
程式碼:
LARGE_INTEGER litmp;
LONGLONG QPart1,QPart2;
double dfMinus, dfFreq, dfTim;
QueryPerformanceFrequency(&litmp); //計數器的時鐘頻率
dfFreq = (double)litmp.QuadPart;
QueryPerformanceCounter(&litmp); //初始值
QPart1 = litmp.QuadPart;
plugin_init(); //測試程式碼
AfxMessageBox(_T("ddd")); //測試程式碼
int plugin_process(void* _pData); // 測試程式碼
QueryPerformanceCounter(&litmp); //中止值
QPart2 = litmp.QuadPart;
dfMinus = (double)(QPart2 - QPart1);
dfTim = dfMinus / dfFreq;
CString strrr;
strrr.Format("%f", dfTim*1000000);
strrr += "微秒";
total = strrr;
plugin_exit();
SetDlgItemText(IDC_EDIT2, total);
AfxBeginThread(Thread1,this,THREAD_PRIORITY_IDLE);