头文件
#pragma once
// 精确获得算法处理时间的类(毫秒量级)
class DT_Time
{
public:
DT_Time();
// 计时开始
void TimeStart(void);
// 计时结束
void TimeEnd(void);
// 获得耗时(单位:毫秒)
double GetElapseTime(void);
CString GetFormatTime(long ms); //把毫秒转换成天/时/分/秒/毫秒
private:
double m_ElapseTime;// 算法处理时间 (单位: ms)
LARGE_INTEGER new_time, old_time, frequency;// 计数值
};
源文件
#include "StdAfx.h"
#include "DT_Time.h"
// 计时开始
DT_Time::DT_Time()
{
m_ElapseTime = 0;
}
void DT_Time::TimeStart(void)
{
m_ElapseTime = 0;
QueryPerformanceFrequency(&frequency);
QueryPerformanceCounter(&old_time);
}
// 计时结束
void DT_Time::TimeEnd(void)
{
QueryPerformanceCounter(&new_time);
m_ElapseTime = (double)(new_time.QuadPart - old_time.QuadPart) / (double)frequency.QuadPart * 1000;
}
// 获得算法处理时间 (单位: ms)
double DT_Time::GetElapseTime(void)
{
return m_ElapseTime;
}
//把毫秒转换成天/时/分/秒/毫秒
CString DT_Time::GetFormatTime(long ms)
{
//时间基数
int ss = 1000;
int mi = ss * 60;
int hh = mi * 60;
int dd = hh * 24;
//转换成天/时/分/秒/毫秒
long day = ms / dd;
long hour = (ms - day*dd) / hh;
long minute = (ms - day*dd - hour*hh) / mi;
long second = (ms - day*dd - hour*hh - minute*mi) / ss;
long millisecond = ms - day*dd - hour*hh - minute*mi - second*ss;
CString strTime = "",temp;
if (day > 0)
{
temp.Format("%d", day);
strTime += temp + _T("天"); }
if (hour > 0)
{ temp.Format("%d", hour); strTime += temp + _T("时");
}
if (minute > 0)
{
temp.Format("%d", minute);
strTime += temp + _T("分");
}
if (second > 0)
{
temp.Format("%d", second);
strTime += temp + _T("秒");
}
if (millisecond > 0)
{
temp.Format("%d", millisecond);
strTime += temp + _T("毫秒");
}
return strTime;
}
```cpp
实际运用
头文件
DT_Time m_timer;
源文件
m_timer.TimeStart();
m_timer.TimeEnd();
m_TestTime = m_timer.GetElapseTime();
m_strTime = m_timer.GetFormatTime(m_TestTime);
GetDlgItem(IDC_OS_TIME)->SetWindowTextA(m_strTime);