初探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学习(三十)———— 数据库连接池
一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大 ...
- Mybatis之基于XML的调用存储过程与手动回滚事务
一.调用存储过程 一.返回单个值 1.存储过程准备 这里先创建一个存储过程,传入参数为age,传出参数为count.然后先测试一下是否正确. CREATE DEFINER=`root`@`localh ...
- Oracle入门《Oracle介绍》第一章1-2 Oracle 实例
Oracle实例:是后台进程和内存结构的集合 一.内存结构 1.Oracle 实例启动时分配系统全局区 a.数据库信息存储于SGA,由多个数据库进程共享 1.共享池是对SQL.PL/SQL程序进行语法 ...
- 《SQL Server从入门到精通》
书名 <SQL Server从入门到精通> 图片 时间 2017-6月 学习 书还可以看完不痛不痒 光盘里面是c的视频有趣这是要我学c的节奏啊,可以写一些基础sql语句也是一门语言叫T-s ...
- 【多线程】Task
介绍 Task是.NET推出数据任务处理的工作类.位于System.Threading.Tasks命名空间下,通过命名空间也可以看出是个多线程类. 创建Task: Task有很多构造函数,无参有参都有 ...
- [PHP] 算法-邻接矩阵图的广度和深度优先遍历的PHP实现
1.图的深度优先遍历类似前序遍历,图的广度优先类似树的层序遍历 2.将图进行变形,根据顶点和边的关系进行层次划分,使用队列来进行遍历 3.广度优先遍历的关键点是使用一个队列来把当前结点的所有下一级关联 ...
- jsp使用servlet实现文件上传
1.在index.jsp中写入以下代码 <form method="post" action="demo3" enctype="multipar ...
- fullScreen.html
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- 微信小程序日历课表
最近项目中使用到了日历,在网上找了一些参考,自己改改,先看效果图 wxml <view class="date"> <image class="dire ...
- 【代码笔记】Web-JavaScript-JavaScript语句
一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...