因为经常需要对代码段计时,如下是一个抽象的计时器类,包含两个类一个是Timer类,用于计时操作,在需要计时的代码段开始处调用Start()开始计时,在代码段结尾处调用Stop()停止计时,Elapse()可以获取代码段的耗时。另一个是TimerFactory类用于Timer的管理调用GetTimer()即可获取一个计时器,GetTimer()参数为计时器的名字。
#include <iostream>
#include <chrono>
#include <map>
#include <unistd.h>
enum TimeUnit{
SS = 0, //秒
MS, //毫秒
US, //微秒
NS //纳秒
};
class Timer{
typedef std::chrono::high_resolution_clock hrc;
typedef std::chrono::time_point<std::chrono::high_resolution_clock> tp_hrc;
public:
Timer():start_(hrc::now()),end_(hrc::now()){}
virtual ~Timer(){}
void Start(){
start_ = hrc::now();
}
void Stop(){
end_ = hrc::now();
}
void Reset(){
start_ = hrc::now();
end_ = hrc::now();
}
double Elapsed(TimeUnit type = MS){
if(type == TimeUnit::SS){