1 //myTimer.h 2 3 // [10/16/2013 Duan Yihao] 4 5 #pragma once 6 7 #include "StdAfx.h" 8 9 ////////////////////////////////////////////////////////////////////////// 10 class myTimer 11 { 12 13 public: 14 myTimer(void); 15 ~myTimer(void); 16 17 public: 18 void start(void); 19 void end(void); 20 21 void getRunTime(float &minute,float &second,float &millSecond); 22 23 private: 24 25 SYSTEMTIME stStar; 26 SYSTEMTIME stEnd; 27 28 // 29 float m_minute; 30 float m_second; 31 float m_millSecond; 32 33 }; 34 35 36 37 38 ////////////////////////////////////////////////////////////////////////// 39 //myTimer.cpp 40 41 myTimer::myTimer(void) 42 { 43 44 m_minute=0.0; 45 m_second=0.0; 46 m_millSecond=0.0; 47 } 48 49 myTimer::~myTimer(void) 50 { 51 } 52 53 void myTimer::start(void) 54 { 55 56 GetLocalTime(&stStar);//获取算法处理前,系统时间 57 58 } 59 60 void myTimer::end(void) 61 { 62 63 // 64 SYSTEMTIME st2; 65 GetLocalTime(&stEnd);//获取算法结束时系统时间 66 float tm1,tm2; 67 float ts1,ts2; 68 float tms1,tms2; 69 70 tm1=stStar.wMinute; 71 tm2=stEnd.wMinute;//分 72 73 ts1=stStar.wSecond; 74 ts2=stEnd.wSecond;//秒 75 76 tms1=stStar.wMilliseconds; 77 tms2=stEnd.wMilliseconds;//毫秒 78 79 if (tms2<tms1) 80 { 81 tms2+=1000; 82 ts2-=1; 83 } 84 if (ts2<ts1) 85 { 86 ts2+=60; 87 tm2-=1; 88 } 89 if (tm2<tm1) 90 { 91 tm2+=60; 92 } 93 94 m_minute=tm2-tm1; 95 m_second=ts2-ts1; 96 m_millSecond=tms2-tms1; 97 98 //CString time; 99 //time.Format(_T("run time consume:%f min,%f s,%f ms"),tm2-tm1,ts2-ts1,tms2-tms1); 100 //AfxMessageBox(time); 101 102 } 103 104 void myTimer::getRunTime(float &minute,float &second,float &millSecond) 105 { 106 minute=m_minute; 107 second=m_second; 108 millSecond=m_millSecond; 109 } 110 111 112 /* 113 ////////////////////////////////////////////////////////////////////////// 114 //mfc下测试举例: 115 116 void CtestMFCView::OnTest() 117 { 118 119 // TODO: 在此添加命令处理程序代码 120 //测试例子 121 122 //计时开始 123 myTimer t; 124 t.start(); 125 126 //------------------------------------------------------------------------------ 127 //>>> 128 for(int i = 0; i < 10; i++) 129 { 130 int n = i; 131 for(int i = 0; i < 100000; i++) 132 { 133 int n = i; 134 } 135 } 136 //<<< 137 //------------------------------------------------------------------------------ 138 139 //计时结束 140 t.end(); 141 142 //耗时显示 143 float m,s,ms; 144 t.getRunTime(m,s,ms); 145 146 CString time; 147 time.Format(_T("run time consume:%f min, %f s, %f ms"),m,s,ms); 148 AfxMessageBox(time); 149 150 } 151 152 */