HighRezTimer.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include "anki/util/HighRezTimer.h"
  2. #include "anki/util/Assert.h"
  3. #include <boost/date_time/posix_time/posix_time.hpp>
  4. namespace anki {
  5. //==============================================================================
  6. HighRezTimer::HighRezTimer()
  7. : startTime(0.0), stopTime(0.0)
  8. {}
  9. //==============================================================================
  10. void HighRezTimer::start()
  11. {
  12. ANKI_ASSERT(startTime == 0);
  13. ANKI_ASSERT(stopTime == 0);
  14. startTime = getCrntTime();
  15. stopTime = 0.0;
  16. }
  17. //==============================================================================
  18. void HighRezTimer::stop()
  19. {
  20. ANKI_ASSERT(startTime != 0.0);
  21. ANKI_ASSERT(stopTime == 0.0);
  22. stopTime = getCrntTime();
  23. }
  24. //==============================================================================
  25. HighRezTimer::Scalar HighRezTimer::getElapsedTime() const
  26. {
  27. if(stopTime == 0)
  28. {
  29. return getCrntTime() - startTime;
  30. }
  31. else
  32. {
  33. return stopTime - startTime;
  34. }
  35. }
  36. //==============================================================================
  37. HighRezTimer::Scalar HighRezTimer::getCrntTime()
  38. {
  39. using namespace boost::posix_time;
  40. ulong ms = ptime(microsec_clock::local_time()).time_of_day().
  41. total_milliseconds();
  42. return Scalar(ms) / 1000.0;
  43. }
  44. } // end namespace