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);
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值