// // Created by zx on 2021/5/19. // #ifndef ROBOT_CONTROL_FEATURE_EXTRA_SRC_TICK_HPP_ #define ROBOT_CONTROL_FEATURE_EXTRA_SRC_TICK_HPP_ #include class Tick { public: Tick() { m_start=std::chrono::steady_clock::now(); m_last_tick=m_start; } Tick(const Tick& tick)= default; Tick& operator=(const Tick& tick)= default; double tic() { auto tic=std::chrono::steady_clock::now(); m_last_tick=tic; auto duration = std::chrono::duration_cast(tic - m_start); return double(duration.count()) * std::chrono::microseconds::period::num / std::chrono::microseconds::period::den; } double tic_relatively() { auto tic=std::chrono::steady_clock::now(); auto duration = std::chrono::duration_cast(tic - m_last_tick); m_last_tick=tic; return double(duration.count()) * std::chrono::microseconds::period::num / std::chrono::microseconds::period::den; } private: std::chrono::steady_clock::time_point m_start; std::chrono::steady_clock::time_point m_last_tick; }; #endif //ROBOT_CONTROL_FEATURE_EXTRA_SRC_TICK_HPP_