FF13Fix/Common/Timer.h
2016-01-26 15:32:24 +01:00

69 lines
1.1 KiB
C++

#pragma once
#include <windows.h>
class Timer
{
public:
Timer()
{
QueryPerformanceFrequency(&m_frequency);
m_startCount.QuadPart = 0;
m_endCount.QuadPart = 0;
m_stopped = 0;
m_startTimeInMicroSec = 0;
m_endTimeInMicroSec = 0;
}
~Timer()
{
}
void Start()
{
m_startCount.QuadPart = 0;
QueryPerformanceCounter(&m_startCount);
}
void Stop()
{
m_stopped = true;
QueryPerformanceCounter(&m_endCount);
}
double GetElapsedTimeInMicroSec()
{
if (!m_stopped)
QueryPerformanceCounter(&m_endCount);
m_startTimeInMicroSec = m_startCount.QuadPart * (1000000.0 / m_frequency.QuadPart);
m_endTimeInMicroSec = m_endCount.QuadPart * (1000000.0 / m_frequency.QuadPart);
return m_endTimeInMicroSec - m_startTimeInMicroSec;
}
double GetElapsedTimeInMilliSec()
{
return GetElapsedTimeInMicroSec() * 0.001;
}
double GetElapsedTimeInSec()
{
return GetElapsedTimeInMicroSec() * 0.000001;
}
double GetElapsedTime()
{
return GetElapsedTimeInSec();
}
private:
double m_startTimeInMicroSec;
double m_endTimeInMicroSec;
bool m_stopped;
LARGE_INTEGER m_frequency;
LARGE_INTEGER m_startCount;
LARGE_INTEGER m_endCount;
};