chrono high_resolution_clock实现计时器

程序参考《深入应用C++11 代码优化与工程级应用》,使用high_resolution_clock实现计时器,在测试程序性能时会用到,测试程序的耗时。

high_resolution_clock:
高精度时钟,时钟类的成员,提供对当前time_point的访问。

high_resolution_clock 是间隔周期最短的时钟。它可能是system_clock或steady_clock的别名。

time_point表示一个时间点,用来获取从它的clock的纪元开始所经过的时间(比如1970.1.1以来的时间间隔)和当前的时间。

#ifndef TIME_HPP
#define TIME_HPP

#include 
using namespace std;
using namespace std::chrono;

class MyTimer{
public:
    MyTimer(){
       m_begin = high_resolution_clock::now();
       m_end = m_begin;
    }
    void reset()
    {
        m_begin = high_resolution_clock::now();
        m_end = m_begin;
    }

    void end()
    {
        this->m_end = high_resolution_clock::now();
    }

    //默认输出毫秒
    template
    int64_t elapsed() const
    {

        return duration_cast(this->m_end - m_begin).count();
    }

    //微妙
    int64_t elapsed_micro() const{
        return elapsed();
    }

    //nano second
    int64_t elapsed_nano() const{
        return elapsed();
    }

    //second
    int64_t elapsed_seconds() const{
        return elapsed();
    }

    //minute
    int64_t elapsed_minutes() const
    {
        return elapsed();
    }

    //hour
    int64_t elapsed_hour() const
    {
        return elapsed();
    }

private:
    time_point m_begin;
    time_point m_end;
};


#endif // TIME_HPP

#include 
#include 
#include 

#include "time.hpp"
#include 
#include 
using namespace std;

int func()
{
    int a=0;
    for (int i=0; i<100000; i++)
    {
        std::this_thread::sleep_for(chrono::nanoseconds(2));
        a += i;
    }
    return a;
}

int main()
{
    MyTimer t;
    func();
    t.end();

    cout<

结果:

5
5004
5004400
0
0
0

你可能感兴趣的:(定时器,C++,c++,耗时,定时器)