每次需要测试运行时间的时候都要再去网上搜索一遍,基于clock的是秒级别的,精确度不高,我之前一直用基于频率计数器的,但是一直用没有封装好的函数,把这个记录下来也是图个方便。
需要包含的头文件和namespace是
#include <Windows.h>
#include <iostream>
using namespace std;
类的定义如下
class CTimer
{
public:
CTimer()
{
QueryPerformanceFrequency(&m_Frequency);
Start();
}
void Start()
{
QueryPerformanceCounter(&m_StartCount);
}
double End()
{
LARGE_INTEGER CurrentCount;
QueryPerformanceCounter(&CurrentCount);
return double(CurrentCount.LowPart - m_StartCount.LowPart) / (double)m_Frequency.LowPart;
}
void ShowNow()
{
LARGE_INTEGER CurrentCount;
QueryPerformanceCounter(&CurrentCount);
cout<<"Timer Count is:"<<double(CurrentCount.LowPart - m_StartCount.LowPart) / (double)m_Frequency.LowPart<<endl;
}
private:
LARGE_INTEGER m_Frequency;
LARGE_INTEGER m_StartCount;
};
在程序运行的时候这样使用
int main()
{
CTimer t; // 初始化
sleep(1000);// 这段是具体的程序中的内容
cout<<"Detection time is "<<t.End()*1000<<"ms"<<endl; // 显示时间
return 0;
}
结束之后就可以显示时间了。