初入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该有的函数也都有