QueryPerformanceFrequency Window下的高精度计时器

来源:互联网 发布:印度和中国的差距知乎 编辑:程序博客网 时间:2024/04/29 12:15
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include "AcquireExecutionTime.h"
int _tmain(int argc, _TCHAR* argv[])
{
AcquireExecutionTime apt;
if(apt.IsSupport() == false )
{
return -1;
}
for(int i=0; i< 10; i++)
{
Sleep(100);
std::cout << i << std::endl;
}
printf("%f milisecond\n", apt.GetTimeSpanMS(false));
for(int i=0; i< 10; i++)
{
Sleep(100);
std::cout << i << std::endl;
}
printf("%f milisecond\n", apt.GetTimeSpanMS(false));
return 0;
}
// .h#ifndef ACQUIRE_EXECUTION_TIME_H#ifndef ACQUIRE_EXECUTION_TIME_H#include <windows.h>class AcquireExecutionTime{public:AcquireExecutionTime(void);~AcquireExecutionTime(void);public:double GetTimeSpanSec(bool isReset = false);double GetTimeSpanMS(bool isReset = false){ return GetTimeSpanSec(isReset) * 1000; }BOOL IsSupport() const { return m_bSupport; }protected:BOOL Reset();private:BOOLm_bSupport;LARGE_INTEGERm_lFrequency;LARGE_INTEGERm_lStartTime;};#endif//.cpp#include "AcquireExecutionTime.h"AcquireExecutionTime::AcquireExecutionTime(void){this->Reset();}AcquireExecutionTime::~AcquireExecutionTime(void){}BOOL AcquireExecutionTime::Reset(){m_bSupport = QueryPerformanceFrequency(&m_lFrequency) == 0 ? FALSE : TRUE;if (m_bSupport){ return QueryPerformanceCounter(&m_lStartTime);}return FALSE;}double AcquireExecutionTime::GetTimeSpanSec(bool isReset){if (m_bSupport){LARGE_INTEGERendTime;QueryPerformanceCounter(&endTime);double ret = (double)(endTime.QuadPart - m_lStartTime.QuadPart)/(double)m_lFrequency.QuadPart;if(isReset){this->Reset();}return ret;}return -1;}
原创粉丝点击