You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 lines
836 B

  1. #include "timer.h"
  2. Timer::Timer()
  3. {
  4. mCurrentThread = GetCurrentThread();
  5. DWORD_PTR systemAffinityMask;
  6. GetProcessAffinityMask(GetCurrentProcess(), &mProcessAffinityMask, &systemAffinityMask);
  7. SetThreadAffinityMask(mCurrentThread, 1);
  8. QueryPerformanceFrequency(&mCPUFrequency);
  9. SetThreadAffinityMask(mCurrentThread, mProcessAffinityMask);
  10. }
  11. void Timer::Start()
  12. {
  13. SetThreadAffinityMask(mCurrentThread, 1);
  14. QueryPerformanceCounter(&mStart);
  15. SetThreadAffinityMask(mCurrentThread, mProcessAffinityMask);
  16. }
  17. int Timer::GetPassedTickers()
  18. {
  19. SetThreadAffinityMask(mCurrentThread, 1);
  20. QueryPerformanceCounter(&mEnd);
  21. SetThreadAffinityMask(mCurrentThread, mProcessAffinityMask);
  22. return (int)(mEnd.QuadPart - mStart.QuadPart);
  23. }
  24. float Timer::GetPassedTime()
  25. {
  26. return (float)GetPassedTickers() / (float)mCPUFrequency.QuadPart;
  27. }