有时候需要测试某段代码的运行时间,在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);