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);

你可能感兴趣的:(windows,c/c++)