mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-16 06:05:58 -06:00
50 lines
1.1 KiB
C++
50 lines
1.1 KiB
C++
#ifdef flagWIN32
|
|
|
|
#include "TimeHelpersWin32.h"
|
|
#include <windows.h>
|
|
|
|
namespace UnitTest {
|
|
|
|
Timer::Timer()
|
|
: m_startTime(0)
|
|
{
|
|
m_threadId = ::GetCurrentThread();
|
|
DWORD_PTR systemMask;
|
|
::GetProcessAffinityMask(GetCurrentProcess(), &m_processAffinityMask, &systemMask);
|
|
|
|
::SetThreadAffinityMask(m_threadId, 1);
|
|
::QueryPerformanceFrequency(reinterpret_cast< LARGE_INTEGER* >(&m_frequency));
|
|
::SetThreadAffinityMask(m_threadId, m_processAffinityMask);
|
|
}
|
|
|
|
void Timer::Start()
|
|
{
|
|
m_startTime = GetTime();
|
|
}
|
|
|
|
int Timer::GetTimeInMs() const
|
|
{
|
|
__int64 const elapsedTime = GetTime() - m_startTime;
|
|
double const seconds = double(elapsedTime) / double(m_frequency);
|
|
return int(seconds * 1000.0f);
|
|
}
|
|
|
|
__int64 Timer::GetTime() const
|
|
{
|
|
LARGE_INTEGER curTime;
|
|
::SetThreadAffinityMask(m_threadId, 1);
|
|
::QueryPerformanceCounter(&curTime);
|
|
::SetThreadAffinityMask(m_threadId, m_processAffinityMask);
|
|
return curTime.QuadPart;
|
|
}
|
|
|
|
|
|
|
|
void TimeHelpers::SleepMs(int const ms)
|
|
{
|
|
::Sleep(ms);
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|