HighRezTimer.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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),
  8. stopTime(0.0)
  9. {}
  10. //==============================================================================
  11. void HighRezTimer::start()
  12. {
  13. ANKI_ASSERT(startTime == 0);
  14. ANKI_ASSERT(stopTime == 0);
  15. startTime = getCrntTime();
  16. stopTime = 0.0;
  17. }
  18. //==============================================================================
  19. void HighRezTimer::stop()
  20. {
  21. ANKI_ASSERT(startTime != 0.0);
  22. ANKI_ASSERT(stopTime == 0.0);
  23. stopTime = getCrntTime();
  24. }
  25. //==============================================================================
  26. HighRezTimer::Scalar HighRezTimer::getElapsedTime() const
  27. {
  28. if(stopTime == 0)
  29. {
  30. return getCrntTime() - startTime;
  31. }
  32. else
  33. {
  34. return stopTime - startTime;
  35. }
  36. }
  37. //==============================================================================
  38. HighRezTimer::Scalar HighRezTimer::getCrntTime()
  39. {
  40. using namespace boost::posix_time;
  41. ulong ms = ptime(microsec_clock::local_time()).time_of_day().
  42. total_milliseconds();
  43. return Scalar(ms) / 1000.0;
  44. }
  45. } // end namespace