CmTimer.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include "CmTimer.h"
  2. #include "CmBitwise.h"
  3. namespace CamelotFramework
  4. {
  5. Timer::Timer()
  6. {
  7. reset();
  8. }
  9. Timer::~Timer()
  10. {
  11. }
  12. void Timer::reset()
  13. {
  14. QueryPerformanceFrequency(&mFrequency);
  15. QueryPerformanceCounter(&mStartTime);
  16. mZeroClock = clock();
  17. }
  18. unsigned long Timer::getMilliseconds()
  19. {
  20. LARGE_INTEGER curTime;
  21. QueryPerformanceCounter(&curTime);
  22. LONGLONG newTime = curTime.QuadPart - mStartTime.QuadPart;
  23. // Scale by 1000 for milliseconds
  24. unsigned long newTicks = (unsigned long) (1000 * newTime / mFrequency.QuadPart);
  25. return newTicks;
  26. }
  27. unsigned long Timer::getStartMs() const
  28. {
  29. unsigned long newTicks = (unsigned long) (1000 * mStartTime.QuadPart / mFrequency.QuadPart);
  30. return newTicks;
  31. }
  32. unsigned long Timer::getMicroseconds()
  33. {
  34. LARGE_INTEGER curTime;
  35. QueryPerformanceCounter(&curTime);
  36. LONGLONG newTime = curTime.QuadPart - mStartTime.QuadPart;
  37. // Scale by 1000000 for microseconds
  38. unsigned long newMicro = (unsigned long) (1000000 * newTime / mFrequency.QuadPart);
  39. return newMicro;
  40. }
  41. unsigned long Timer::getMillisecondsCPU()
  42. {
  43. clock_t newClock = clock();
  44. return (unsigned long)((float)(newClock - mZeroClock) / ((float)CLOCKS_PER_SEC / 1000.0f));
  45. }
  46. unsigned long Timer::getMicrosecondsCPU()
  47. {
  48. clock_t newClock = clock();
  49. return (unsigned long)((float)(newClock - mZeroClock) / ((float)CLOCKS_PER_SEC / 1000000.0f));
  50. }
  51. }