Newer
Older
WorkCardReader / utils / id / Timer.h
tanyue on 18 Jun 2022 1 KB 20220618 界面调整
#ifndef _JW_CORE_TIMER_H_
#define _JW_CORE_TIMER_H_

#include <chrono>

namespace Jiawa {

    /**
    * @brief 核心
    * 核心功能
    */
    namespace Core {

        /**
        * @brief 计时器类
        * 计时
        */
        template <typename CLOCK = std::chrono::high_resolution_clock>
        class Timer {
        public:

            typedef CLOCK clock;
            typedef typename CLOCK::rep rep;
            typedef typename CLOCK::duration duration;
            typedef typename CLOCK::time_point time_point;

            Timer() : m_start(CLOCK::now()) {
            }

            /**
            * @brief 重置计时器
            *
            * @return 开始的时间点
            */
            time_point reset() {
                m_start = CLOCK::now();
                return m_start;
            }

            /**
            * @brief 得到流逝的时间
            * @param UNIT 返回时间的类型
            *
            * @return 返回流逝的时间
            */
            template <typename UNIT = std::chrono::milliseconds>
            typename UNIT::duration::rep elapsed() const {
                return std::chrono::duration_cast<UNIT>(CLOCK::now() - m_start).count();
            }

        private:
            time_point m_start;
        };
    }
}

#endif // _JW_CORE_TIMER_H_