tick.hpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. //
  2. // Created by zx on 2021/5/19.
  3. //
  4. #ifndef ROBOT_CONTROL_FEATURE_EXTRA_SRC_TICK_HPP_
  5. #define ROBOT_CONTROL_FEATURE_EXTRA_SRC_TICK_HPP_
  6. #include <chrono>
  7. class Tick
  8. {
  9. public:
  10. Tick()
  11. {
  12. m_start=std::chrono::steady_clock::now();
  13. m_last_tick=m_start;
  14. }
  15. Tick(const Tick& tick)= default;
  16. Tick& operator=(const Tick& tick)= default;
  17. double tic()
  18. {
  19. auto tic=std::chrono::steady_clock::now();
  20. m_last_tick=tic;
  21. auto duration = std::chrono::duration_cast<std::chrono::microseconds>(tic - m_start);
  22. return double(duration.count()) * std::chrono::microseconds::period::num /
  23. std::chrono::microseconds::period::den;
  24. }
  25. double tic_relatively()
  26. {
  27. auto tic=std::chrono::steady_clock::now();
  28. auto duration = std::chrono::duration_cast<std::chrono::microseconds>(tic - m_last_tick);
  29. m_last_tick=tic;
  30. return double(duration.count()) * std::chrono::microseconds::period::num /
  31. std::chrono::microseconds::period::den;
  32. }
  33. private:
  34. std::chrono::steady_clock::time_point m_start;
  35. std::chrono::steady_clock::time_point m_last_tick;
  36. };
  37. #endif //ROBOT_CONTROL_FEATURE_EXTRA_SRC_TICK_HPP_