初探boost之timer库学习笔记
timer
使用方法
#include <boost/timer.hpp>
#include <iostream>
using namespace std;
using namespace boost;
int main()
{
timer t;//声明一个计时器对象,開始计时
cout<<"max:"<<t.elapsed_max()/3600<<"h"<<endl; //可度量的最大时间,以小时为单位
cout<<"min:"<<t.elapsed_min()<<"s"<<endl; //可度量的最小时间(精度),以秒为单位
cout<<"now:"<<t.elapsed()<<"s"<<endl; //输出已流逝的时间 (从声明对象開始)
return 0;
}
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ3hpYW9idXB0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" />
使用建议
适用于大部分要求不高的程序计时任务。
timer不适合高精度的时间測量任务,它的精度依赖于操作系统或编译器,难以跨平台。也不适合大跨度的时间段的
測量。另外它已经被声明为废弃,或许会在将来某个时候移出Boost程序库。
仅仅能供程序猿手工控制使用,就像是个
方便的秒表。
progress_timer
使用方法
#include <boost/progress.hpp>
#include <iostream>
using namespace std;
using namespace boost;
int main()
{
progress_timer t;//声明一个计时器对象。開始计时
cout<<"now:"<<t.elapsed()<<"s"<<endl; //输出已流逝的时间
int i = 60000;
while(i--)
{
int j = 6000;
while(j--);
} //延时而已
return 0;
}
使用建议:
progress_timer继承自timer。会在析构函数时,自己主动输出时间。
因此上述结果会有两个时间,一个是手动调用。一
个是析构时自己主动输出。
假设要在一个程序中多次測量,能够用花括号{ } 限定progress_timer的生命期:
{
{
boost::progress_timer t1 ;
// doing something
} //析构时会自己主动输出时间
{
boost::progress_timer t2 ;
// doing something
} //析构时又会自己主动输出时间
}
注:
progress_timer与timer不同的是,构造函数progress_timer(std::ostream &os) 。它将同意在析构时将时间输入指
定的IO流里,默认是std::out。
总结
这两个用于计时的小工具。精度不高但够用。
progress_timer能利用析构函数被自己主动调用的特点,自己主动显示时间。
假设须要更高精度的计时,应该使用timer库的还有一个组件:cpu_timer
初探boost之timer库学习笔记的更多相关文章
- 初探boost之smart_ptr库学习笔记
概述 Boost.smart_ptr库提供了六种智能指针,除了shared_ptr 和 weak_ptr 以外还包含 scoped_ptr .scoped_array . shared_array . ...
- 初探boost之progress_display库学习笔记
progress_display 用途 progress_display能够在控制台上显示程序的运行进度,假设程序运行非常耗费时间,那么它能提供一个友好的用户界 面,不至于让用户在等待中失去耐心,甚至 ...
- muduo网络库学习笔记(三)TimerQueue定时器队列
目录 muduo网络库学习笔记(三)TimerQueue定时器队列 Linux中的时间函数 timerfd简单使用介绍 timerfd示例 muduo中对timerfd的封装 TimerQueue的结 ...
- numpy, matplotlib库学习笔记
Numpy库学习笔记: 1.array() 创建数组或者转化数组 例如,把列表转化为数组 >>>Np.array([1,2,3,4,5]) Array([1,2,3,4,5]) ...
- muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor
目录 muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor Connector 系统函数connect 处理非阻塞connect的步骤: Connetor时序图 Accep ...
- muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制
目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...
- C++STL标准库学习笔记(三)multiset
C++STL标准库学习笔记(三)multiset STL中的平衡二叉树数据结构 前言: 在这个笔记中,我把大多数代码都加了注释,我的一些想法和注解用蓝色字体标记了出来,重点和需要关注的地方用红色字体标 ...
- 【python】numpy库和matplotlib库学习笔记
Numpy库 numpy:科学计算包,支持N维数组运算.处理大型矩阵.成熟的广播函数库.矢量运算.线性代数.傅里叶变换.随机数生成,并可与C++/Fortran语言无缝结合.树莓派Python v3默 ...
- C++STL标准库学习笔记(一)sort
前言: 近来在学习STL标准库,做一份笔记并整理好,方便自己梳理知识.以后查找,也方便他人学习,两全其美,快哉快哉! 这里我会以中国大学慕课上北京大学郭炜老师的<程序设计与算法(一)C语言程序设 ...
随机推荐
- JavaWeb学习 (八)————HttpServletResponse对象(二)
一.HttpServletResponse常见应用——生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类,
- [算法]PHP随机合并数组并保持原排序
场景 原有帖子列表A,现需在A中推广新业务B,则需要在A列表中1:1混合B的数据,随机混合,但需保持A和B两列表原来的数据排序.具体参考下面示例的效果. 原理 获知总共元素数量N: for循环N次,取 ...
- Django之stark组件
现在让我说啥是stark组件,我也说不清楚.反正从今天讲的知识来看,今天完成的就是自己写一个模块,这个模块包含了admin后台管理工具的一些比较好用的功能,我们把它提炼出来,也就是相当于自己写一个ad ...
- 将MySQL数据库转移到SqlServer2008数据库
由于工作需要用到了将MySQL数据库转成SqlServer数据库,查了一些资料发现将SqlServer数据库转成MySQL数据库的文章很多,但是反过来的就很少了.下面就将自己的方法分享给大家. 这里用 ...
- html页面边框的简单设置方法
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 读 《CSharp Coding Guidelines》有感
目录 基本原则 类设计指南 属性成员设计指南 其他设计指南 可维护性指南 命名指南 性能指南 框架指南 文档指南 布局指南 相关链接 C# 编程指南 前不久在 Github 上看见了一位大牛创建一个仓 ...
- 【Mybatis】一对多实例
①创建数据库和表,数据库为mytest,表为teacher和student DROP TABLE IF EXISTS teacher; DROP TABLE IF EXISTS student; CR ...
- 做webApp遇到的一些坑及解决方案
1.问题:手机端click事件会有大约300ms的延迟 原因:手机端事件touchstart-->touchmove-->touchend or touchcancel-->clic ...
- sqlserver每行都有累加,你怎么搞,窗口函数来帮忙!!!
在统计中我们经常会面临复杂的查询,例如累加,最近也遇到一个很好的例子,今天我们一起来看看: 有一个关于销售数据的视图,字段有:emptyid(员工编号),ordermonth( ...
- java enum使用方法
直接上手吧,注释都写清楚了 编写枚举类 /** * 可以使用接口或类包裹枚举元素,使其可以统一调用入口 */ public interface TestEnumIntfc { /** * 创建枚举对象 ...