借助c++11提供的steady_clock
,实现了精确获取逻辑执行时间的方法,原理:当前时间 - 开始时间。
工具类文件Timer.h:
#pragma once
#include <chrono>
using namespace std::chrono;
// 记录执行代码消耗时间
class Timer
{
public:
Timer() :m_begin(steady_clock::now()) {}; // 初始化列表
void reset() { m_begin = steady_clock::now(); }; // 重置当前时间
// 默认输出毫秒,如果函数逻辑简单建议使用微秒
long long cost() const
{
return duration_cast<std::chrono::milliseconds>(steady_clock::now() - m_begin).count();
}
// 微秒
long long cost_micro() const
{
return duration_cast<std::chrono::microseconds>(steady_clock::now() - m_begin).count();
}
// 秒
long long cost_seconds() const
{
return duration_cast<std::chrono::seconds>(steady_clock::now() - m_begin).count();
}
private:
time_point<steady_clock> m_begin;
};
包含工具头文件就可以使用了:
#include"Timer.h"
Timer timer; // 构造Timer对象,同时记录当前时间
Case1(); // 需要获取执行时间的逻辑
cout << "cost1 = "<< timer.cost(); // 得出执行时间
timer.reset(); // 重置初始时间
Case2(); // 另一个需要获取执行时间的逻辑
cout << "cost2 = "<< timer.cost(); // 得出执行时间