#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:
BOOL m_bSupport;
LARGE_INTEGER m_lFrequency;
LARGE_INTEGER m_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_INTEGER endTime;
QueryPerformanceCounter(&endTime);
double ret = (double)(endTime.QuadPart - m_lStartTime.QuadPart)/(double)m_lFrequency.QuadPart;
if(isReset)
{
this->Reset();
}
return ret;
}
return -1;
}