C++学习记录:基于chrono库的高精度计时器

C++学习记录:基于chrono库的高精度计时器

  C++11中新引入了std::chrono库,由此可以较为容易的实现一个计时器。同时,休眠操作也可以通过这个库来实现,从而使代码有良好的跨平台性,避免使用Windows/Linux的系统休眠函数。
  在接下来的网络编程学习中,将引入该计时器,实现对每秒收包、连接等数据的计数显示。
  本篇学习记录使用的语言为C++,调用的库为C++11里的std::chrono库。


一、简易的计时器类

mytimer.hpp代码如下:

#ifndef MY_TIMER_H_
#define MY_TIMER_H_

#include<chrono>

class mytimer
{
    
    
private:
    std::chrono::steady_clock::time_point _begin;//起始时间
    std::chrono::steady_clock::time_point _end;//终止时间
public:
    mytimer()
	{
    
    
		_begin = std::chrono::steady_clock::time_point();
		_end = std::chrono::steady_clock::time_point();
	}
    
	virtual ~mytimer(){
    
    };  
    
    //调用update时,使起始时间等于当前时间
    void UpDate()
    {
    
    
        _begin = std::chrono::steady_clock::now();
    }

	//调用getsecond方法时,经过的时间为当前时间减去之前统计过的起始时间。
    double GetSecond()
    {
    
    
        _end = std::chrono::steady_clock::now();
        //使用duration类型变量进行时间的储存   duration_cast是类型转换方法
        std::chrono::duration<double> temp = std::chrono::duration_cast<std::chrono::duration<double>>(_end - _begin);
       	return temp.count();//count() 获取当前时间的计数数量
    }
};

#endif

测试该计时器的代码示例 main.cpp 代码如下:

#include"mytimer.hpp"
#include<iostream>

int main()
{
    
    
	mytimer _time;
	_time.UpDate();
	for(int n=0;n<100000000;n++)
	{
    
    
		
	}
	std::cout<<_time.GetSecond();
	return 0;
}

二、基于chrono库的休眠

使用方法如下:

	std::chrono::milliseconds t(1);//休眠一毫秒 
	std::this_thread::sleep_for(t);

猜你喜欢

转载自blog.csdn.net/qq_45698148/article/details/113702354
今日推荐