#pragma once
#include
class CPerformanceTime
{
public:
CPerformanceTime(void);
virtual ~CPerformanceTime(void);
// 更新开始时间点的计数值
void ResetTime();
// 获取结束时间点,并返回计算的毫秒时延
int GetMilliSecond();
// 获取结束时间点,并返回计算的微秒时延
int GetMicroSecond();
// 获取开始时间点,单位是微秒
long long GetStartTime();
// 获取结束时间点,单位是微秒
long long GetEndTime();
private:
// CPU的频率值
LARGE_INTEGER m_PerFreq;
// 开始时间点的计数值:需要除以CPU的频率才是时间值
LARGE_INTEGER m_StartTime;
// 结束时间点的计数值:需要除以CPU的频率才是时间值
LARGE_INTEGER m_EndTime;
};
cpp文件
#include "PerformanceTime.h"
CPerformanceTime::CPerformanceTime(void)
{
// 获取cpu的频率
QueryPerformanceFrequency(&m_PerFreq);
// 获取当前时间点的计数值
QueryPerformanceCounter(&m_StartTime);
// 需要给结束时间一个初始值
m_EndTime.QuadPart = 0;
}
CPerformanceTime::~CPerformanceTime(void)
{
}
// 获取结束时间点,并返回计算的毫秒时延
int CPerformanceTime::GetMilliSecond()
{
QueryPerformanceCounter(&m_EndTime);
int dTime = (int)((m_EndTime.QuadPart - m_StartTime.QuadPart) * 1000 / (m_PerFreq.QuadPart));
return dTime;
}
// 获取结束时间点,并返回计算的微秒时延
int CPerformanceTime::GetMicroSecond()
{
QueryPerformanceCounter(&m_EndTime);
int dTime = (int)((m_EndTime.QuadPart - m_StartTime.QuadPart) * 1000000 / (m_PerFreq.QuadPart));
return dTime;
}
// 更新开始时间点的计数值
void CPerformanceTime::ResetTime()
{
QueryPerformanceCounter(&m_StartTime);
}
// 获取开始时间点,单位是微秒
long long CPerformanceTime::GetStartTime()
{
long long dTime;
dTime = m_StartTime.QuadPart * 1000000 / (m_PerFreq.QuadPart);
return dTime;
}
// 获取结束时间点,单位是微秒
long long CPerformanceTime::GetEndTime()
{
long long dTime;
dTime = m_EndTime.QuadPart * 1000000 / (m_PerFreq.QuadPart);
return dTime;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)