//较之前一个版本精度提高了。
#pragma once
//运行效率计时器
#include <fstream>
#include <atlstr.h>
class CClock
{
public:
CClock():m_nStart(0),m_nEnd(0),m_nCounter(0){};
~CClock()
{
if (m_sFile.is_open())
m_sFile.close();
};
void Open(LPCSTR strFileName)
{
if (m_sFile.is_open())
m_sFile.close();
m_sFile.open(strFileName);
}
void Close()
{
m_sFile.close();
}
float Clock(LPCSTR strInfo = _T(""))
{
m_nEnd = Time()*1000.f; //转化为ms
if( lstrcmp(strInfo,"") != 0 )
{
CString str;
str.Format("Step=%d:%s 用时:%.3f ms",m_nCounter++,strInfo,m_nEnd - m_nStart);
m_sFile << str << std::endl;
}
m_nStart = m_nEnd;
return m_nEnd;
}
float Time()
{
static __int64 start = 0;
static __int64 frequency = 0;
if (start==0)
{
QueryPerformanceCounter((LARGE_INTEGER*)&start);
QueryPerformanceFrequency((LARGE_INTEGER*)&frequency);
return 0.0f;
}
__int64 counter = 0;
QueryPerformanceCounter((LARGE_INTEGER*)&counter);
return (float) ((counter - start) / double(frequency));
}
protected:
std::ofstream m_sFile;
float m_nStart,m_nEnd;
LONG m_nCounter;
};
C++代码运行效率计时器--精度达到ms级以下
最新推荐文章于 2022-10-15 11:25:42 发布