c++boost库---timer相关

本文介绍了Boost库中的timer库用于简单计时,不适合高精度测量;progress_timer提供进度更新输出;而cpu_timer用于更精确且跨平台的时间测量。作者通过示例展示了它们的使用方法和特点。
摘要由CSDN通过智能技术生成

初入boost,沿着博主的思路研究源码

C++ | boost库入门_boost c++-CSDN博客

timer库

timer是小型的计时器,不适用于高精度的时间测量任务,它的精度依赖操作系统或编译器,难以做到跨平台。timer也不适用于测量大跨度时间段,如果需要以天、月,甚至年为时间单位则不能使用timer,应使用的cpu_timer组件。

使用timer简单示例

#include <iostream>
#include <Windows.h>
#include "boost/timer.hpp"
 
void TestTimer()
{
    boost::timer _timer;
    //返回 timer 能够测量的最小时间范围
    std::cout << _timer.elapsed_min() << std::endl;
    //elapsed()函数可以返回 timer 能够测量的最大时间范围
    std::cout << _timer.elapsed_max() << std::endl;
    Sleep(1000);
    //elapsed()函数可以简单测量自对象创建之后所用的时间
    std::cout << _timer.elapsed() << std::endl;
}
 
int main()
{
    TestTimer();
}
运行结果

第三个结果不唯一,基本上在0.01s之内变化

观察timer的构造函数,很明显生成对象的时候就开始记时了

最大运行时间:使用了标准库的时钟最大限制值 - 开始时间

最小运行时间:1/1000

progress_timer

#include <iostream>
#include <Windows.h>
/// @brief progress_timer库 
#include "boost/progress.hpp"
#include <sstream>
 
void TestProcessTimer()
{
    {
        boost::progress_timer _timer;
        std::cout << _timer.elapsed_min() << std::endl;
        std::cout << _timer.elapsed_max() << std::endl;
        Sleep(1000); 
    }
    //将progress_timer的输出转移到stringstream中
    std::stringstream ss;
    {
        boost::progress_timer _timer(ss);
        std::cout << _timer.elapsed_min() << std::endl;
        std::cout << _timer.elapsed_max() << std::endl;
        Sleep(1000);  
    }
    std::cout << ss.str() << std::endl;
}
 
int main()
{
    TestProcessTimer();
}
运行结果

progress_timer公有继承timer类和私有继承noncpoyable(禁止复制赋值和复制构造)

参数为新值ostream的输出格式和2位精度,返回值是旧值,可以参考源码

还原为初始值

下面结果运行与上面保持一致。

  {
        boost::progress_timer _timer;
        std::cout << _timer.elapsed_min() << std::endl;
        std::cout << _timer.elapsed_max() << std::endl;
        Sleep(1000); 
    }
    //将progress_timer的输出转移到stringstream中
  //  std::stringstream ss;
    {
        boost::progress_timer _timer;
        std::cout << _timer.elapsed_min() << std::endl;
        std::cout << _timer.elapsed_max() << std::endl;
        Sleep(1000);  
    }
  //  std::cout << ss.str() << std::endl;//输出空值 没任何意义

cpu_timer

auto_cpu_timer实际上是继承了cpu_timer,直接实现记时操作。

auto_cpu_timer继承了cpu_timer

cpu_timer该有的函数也都有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值