1. 程式人生 > >c++\MFC測試程式碼的執行時間

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中計算程式執行時間

方法三  利用CTime類 獲取系統時間
程式碼:
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);