简洁版:项目工程中,可直接调用下列time.h文件
#ifndef TIME_H
#define TIME_H
#include <cstdint>
#include <chrono>
class ElapsedTimer
{
public:
ElapsedTimer(bool do_start = false)
{
if (do_start)
start();
}
void start()
{
m_start_point = std::chrono::high_resolution_clock::now();
}
uint64_t get_elapsed_ms()
{
auto now = std::chrono::high_resolution_clock::now();
return std::chrono::duration_cast<std::chrono::milliseconds>(now-m_start_point).count();
}
uint64_t get_elapsed_us()
{
auto now = std::chrono::high_resolution_clock::now();
return std::chrono::duration_cast<std::chrono::microseconds>(now-m_start_point).count();
}
private:
std::chrono::time_point<std::chrono::high_resolution_clock> m_start_point;
};
#endif
解析版:
#ifndef TIME_H
#define TIME_H
#include <cstdint>
#include <chrono> //chrono是c++ 11中的时间库,提供计时,时钟等功能
class ElapsedTimer
{
public:
ElapsedTimer(bool do_start = false)
{
if (do_start)
start();
}
void start()
{
m_start_point = std::chrono::high_resolution_clock::now(); //高精度时钟类std::chrono::high_resolution_clock
}
uint64_t get_elapsed_ms()
{
auto now = std::chrono::high_resolution_clock::now(); //要获取某时钟类的当前时刻,调用静态成员函数now()
return std::chrono::duration_cast<std::chrono::milliseconds>(now-m_start_point).count(); //ms;
}
//std::chrono::duration_cast<std::chrono::milliseconds>(end - begin).count(); 成员函数count()返回单位时间的数量
uint64_t get_elapsed_us()
{
auto now = std::chrono::high_resolution_clock::now();
return std::chrono::duration_cast<std::chrono::microseconds>(now-m_start_point).count(); //us
}
private:
std::chrono::time_point<std::chrono::high_resolution_clock> m_start_point;
};
#endif