VC中监测函数运行时间(一)—分钟,秒,毫秒

  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 */
原文地址:https://www.cnblogs.com/vranger/p/3371746.html