C++ Boost库:计时器 timer

本文详细介绍了C++ Boost库中的timer和cpu_timer类,用于时间度量和性能测试。timer类提供简单的时间计时,而cpu_timer则更精确地计量程序的用户执行时间和系统执行时间。通过示例代码展示了如何使用这两个类进行时间测量,并且解释了相关的方法和输出格式。
摘要由CSDN通过智能技术生成


C++ Boost库:简介和第一个示例程序
C++ Boost库:数值转换 lexical_cast
C++ Boost库:字符串格式化 format
C++ Boost库:字符串string_algo
C++ Boost库:字符串算法string_algo
C++ Boost库:类型推导BOOST_AUTO/BOOST_TYPEOF
C++ Boost库:分词处理库 tokenizer
C++ Boost库:windows下编译Boost库
C++ Boost库:日期时间库 date_time
C++ Boost库:智能指针scoped_ptr
C++ Boost库:数组智能指针 scoped_array
C++ Boost库:共享所有权的智能指针 shared_ptr
C++ Boost库:工厂函数 make_shared
C++ Boost库:共享有权的数组智能指针shared_array
C++ Boost库:弱引用智能指针 weak_ptr
C++ Boost库:禁止拷贝 nocopyable
C++ Boost库:计时器 timer
C++ Boost库:普通数组array
C++ Boost库:散列容器 unordered_set、unordered_multiset
C++ Boost库:散列容器 unordered_map、unordered_multimap
C++ Boost库:双向映射容器 bimap
C++ Boost库:环形缓冲区 circular_buffer
C++ Boost库:动态多维数组 multi_array
C++ Boost库:使用property_tree解析XML和JSON
C++ Boost库:简化循环 BOOST_FOREACH
C++ Boost库:随机数库 Random
C++ Boost库:引用库 ref
C++ Boost库:绑定库 bind
C++ Boost库:线程库 thread 跨平台多线程
C++ Boost库:互斥量 mutex

1. timer类

timer是一个很小的库,提供简单的时间度量和进度显示功能,也可用于性能测试等计时任务。timer库包含三个组件:计时器类timerprogress_timer和进度指示类progress_display

timer类可以测量时间的流逝;是一个小型的计时器,提供毫秒级别的计时精度和操作函数,它最大可表示的时间间隔约为596小时,它位于boost命名空间下。使用时需要包含头文件:

#include<boost/timer.hpp>

示例代码:

#include<iostream>
using namespace std;   

#include<boost/timer.hpp>
#include<boost/progress.hpp>

using namespace  boost;

#include<Windows.h>

int main()
{ 
   timer t;

   //cout << "最大精度:" << t.elapsed_max() / 3600 <<"小时"<< endl;
   //cout << "最小精度:" << t.elapsed_min() << endl;//毫秒

   Sleep(1234);//睡眠1234毫秒

   double  elapsed = t.elapsed();

   //从对象定义到此刻的时间
   cout << "流逝的时间:" << elapsed << endl;
   cout << "------------------------------" << endl;
   
   {
   	progress_timer  pt; //继承至timer
   	//progress_timer  pt2(pt); //noncopyable
   	
   	Sleep(2345);//睡眠2345毫秒
   }//析构时,自动打印消耗时间

   return 0;
}

2. cpu_timer类

原始版本的 timer已经废弃,新版本建议使用 cpu_timercpu_timer计量程序经过时间,用户执行时间,和系统执行时间。

使用时需要包含头文件:

#include<boost/timer/timer.hpp> 
using namespace  boost::timer;

链接的库:

#pragma comment(lib, "libboost_timer-vc100-mt-gd-x32-1_67.lib")

cpu_timer类和 auto_cpu_timer类用于精确计时,在elapsed方法中,返回的不再是个数字,而是一个 struct cpu_times结构体

format方法格式化输出结果;默认的格式定义为:

"%ws wall,%us user + %ss system = %ts CPU (%p%)\n"

含义为:

  • %w:times.wall
  • %u:times.user
  • %s:times.system
  • %t:times.user + times.system
  • %p:The percentage of times.wall represented by times.user + times.system

使用示例:

#include<iostream>
using namespace std;   

#include<boost/timer/timer.hpp> 
using namespace  boost::timer;
using namespace  boost;

#include<Windows.h>

int main()
{ 
   cpu_timer  t;  //自动start

    Sleep(1234);//睡眠

    t.stop();
   //for (size_t i = 0; i < 10000000; i++)
   //{
   //	int  a = 100 * i;
   //}

    //默认1.234136s wall, 0.000000s user + 0.000000s system = 0.000000s CPU (n/a%)
   //string  str = t.format();
   string  str = t.format(6 ,"消耗时间 %w 秒");
   cout << str << endl;

   cout << "-------------auto_cpu_timer -----------" << endl;
   {
   	auto_cpu_timer  t2(5, "消耗时间 %w 秒");
   	Sleep(3456);
   }//t2析构时自动打印消耗的时间

   getchar();
   return 0;
}

运行结果:

image-20210504155535388

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级D洋葱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值