Boost中的Timer的使用——计算时间流逝
使用Boost中的Timer库计算程序的运行时间
程序开发人员都会面临一个共同的问题,即写出高质量的代码完毕特定的功能。评价代码质量的一个重要标准就是算法的运行效率,也就是算法的运行时间。为了可靠的提高程序的运行效率,首先要知道运行程序所消耗的时间,然后找出可行的方案对程序进行优化。C++程序猿在开发代码的过程中难免会遇见此类问题,本文以Boost中的Timer库为例。具体解说怎样測量程序的运行时间。
Boost中Timer库的介绍
Timer是Boost中的一个非常小的时间库。提供时间度量和进度显示功能。当中包括三个组件:(1)计时器类timer、timer类的子类progress_timer类和进度指示类progress_display。
1、 timer
timer位于boost命名空间中,使用之前须要包括头文件<boost/timer.hpp>
timer中有3个函数,分别为:(1)elapsed_max(),返回可度量的最大时间间隔;(2)elapsed_min(),返回可度量的最小时间间隔。(3)elapsed(),返回timer类创建到elapsed()函数调用时所流逝的时间。
比如採用timer类測量std::cout<<"helloworld"<<std::endl;语句的运行时间,程序例如以下所看到的:
#include<iostream>
#include<cstdlib>
using namespace std;
#include <boost/timer.hpp>
using namespace boost;
int main(int argc, char ** argv)
{
timer ter; //创建对象时就開始计时
std::cout<<"helloworld"<<std::endl;
std::cout<<ter.elapsed()<<std::endl;//输出程序运行所消耗的时间,以秒为单位。
std::cout<<ter.elapsed_max()<<std::endl;//输出timer类可以度量的最大时间间隔。以秒为单位。
std::cout<<ter.elapsed_min()<<std::endl;//输出timer类可以度量的最小时间间隔。以秒为单位。
return EXIT_SUCCESS;
}
程序运行结果例如以下图所看到的:
2 、 progress_timer类
progress_timer类是timer类的子类,此类具有一定的特殊性,在系统对此类对象进行析构时会自己主动调用此类的elapsed()函数。输出系统运行程序所消耗的时间。
使用progress_timer类须要包括<boost/progress.hpp>头文件
#include <iostream>
#include <cstdlib>
using namespace std;
#include <boost/progress.hpp>
using namespace boost;
int main(int argc, char **argv)
{
boost::progress_timer pt;
std::cout<<"helloworld"<<std::endl;
std::cout<<pt.elapsed()<<std::endl;//手动调用elapsed()函数,输出程序运行时间
return EXIT_SUCCESS;
}
结果例如以下图所看到的:
3、progress_display类
progress_display类用于显示程序的运行进度。使得用户获得动态感。
使用前须要包括<boost/progress.hpp>头文件
#include <iostream>
#include <cstdlib>
#include <vector>
using namespace std;
#include <boost/progress.hpp>
using namespace boost;
int main(int argc, char **argv)
{
std::vector<int> vec(10000);
//申明进度条
boost::progress_display pd(vec.size());
for (int i=0; i<100; i++)
{
vec.push_back(i);
}
return EXIT_SUCCESS;
}
程序运行结果例如以下图所看到的:
Boost中的Timer的使用——计算时间流逝相关推荐
- Goland中time.Timer and time.Ticker
本文介绍 Timer , Tick , Sleep 的实现机制.版本是 GO 1.9 . thinking:goland ticker + redis 实现纳秒级的定时器.redis作为注册[配置中心 ...
- [PaddleSeg源码阅读] PaddleSeg Validation 中添加 Boundary IoU的计算(3)——添加Boundary IoU
经过前面: PaddleSeg Validation 中添加 Boundary IoU的计算(1)--val.py文件细节提示 PaddleSeg Validation 中添加 Boundary Io ...
- pandas中使用rolling.corr函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations)、例如,计算两种商品销售额之间的3个月的滚动相关性
pandas中使用rolling.corr函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations).例如,计算两种商品销售额之间的3个月的滚动相关性 目录
- python使用numpy中的np.mean函数计算数组的均值、np.var函数计算数据的方差、np.std函数计算数组的标准差
python使用numpy中的np.mean函数计算数组的均值.np.var函数计算数据的方差.np.std函数计算数组的标准差 目录
- ASP.NET AJAX入门系列(11):在多个UpdatePanle中使用Timer控件
本文将使用Timer控件更新两个UpdatePanel控件,Timer控件将放在UpdatePanel控件的外面,并将它配置为UpdatePanel的触发器,翻译自官方文档.<?XML:NAME ...
- java捕获定时器抛出的异常_详细了解Java中定时器Timer的使用及缺陷分析
在需要定时并且周期执行任务时,在最初的JAVA工具类库中,Timer可以实现任务的定时周期执行的需求,不过有一定的缺陷,比如,Timer是基于绝对时间而非相对时间,因此Timer对系统时钟比较敏感,本 ...
- boost::gil模块沿 x 轴计算梯度的方法的示例
boost::gil模块沿 x 轴计算梯度的方法的示例 实现功能 C++实现代码 实现功能 boost::gil模块沿 x 轴计算梯度的方法的示例 C++实现代码 #include <boost ...
- Boost:使用OpenCL和OpenCL计算直方图的代码示例
Boost:使用OpenCL和OpenCL计算直方图的代码示例 实现功能 C++实现代码 实现功能 ,Boost的compute模块使用OpenCL和OpenCL计算直方图的代码示例 C++实现代码 ...
- Metro App中使用Timer
在设定的时间结束后,执行相应的方法. 使用metro的Windows.System.Threading命名空间下的ThreadPoolTimer类,可以创建一个Timer. Creat ...
最新文章
- 刻意练习:Python基础 -- Task11. 魔法方法
- 用示波器恢复软盘里的游戏,这个程序员大神的操作太硬核了
- JAVA-数据库之JDBC连接MySQL数据库
- SAP Spartacus lock directive锁住元素所有子元素及设置FOCUS_GROUP_ATTR的行为
- bigdecimal 平均数_MapReduce实例-必须用Combine--求平均数
- 鸿蒙应用开发培训笔记02:应用开发入门
- windows 编译FFMPEG
- 笔记本计算机内存都多大,你的电脑速度慢吗?笔记本电脑“内存”到底要多大才够用?...
- 声纹、语音识别入门书籍推荐
- java标识符命名规范之驼峰命名法
- OpenJDK源码赏析之三:Java命令参数的读取处理流程
- 习题9-3 平面向量加法 (15 分)
- 修改人人商城服务器时间,修改收货地址 · 人人商城二次开发常用文档,超详细,微擎开发微擎二次开发【持续更新】 · 看云...
- 没有技术含量,但能每天赚50刀的GGAD赚钱办法分享
- linux sftp 命令_Linux Sftp命令示例
- excel减法函数_发现EXCEL隐藏功能,SUMIFS函数居然可以多条件求差值看了不后悔...
- Xcode插件所在的目录:~/Library/Application Support/Developer/Shared/Xcode/Plug-ins
- 千兆以太网和快速以太网有什么区别?
- 两台主机的vmware虚拟机相互连通
- 1005:地球人口承载力估计(C C++)
热门文章
- java spi机制_Java是如何实现自己的SPI机制的? JDK源码(一)
- eclipse查看git地址_使用Git进行版本控制
- mysql数据库的逻辑架构和存储引擎
- Ubuntu 首次给root用户设置密码
- poj2464扫描线好题,树状数组解法
- __name__=__main__
- java数据库连接类,已经把数据库操作的方法都封装好了
- PCA主成分分析 特征降维 opencv实现
- 浏览器差异总结,可以用此判断浏览器版本(转)
- 词典对象 NSDictionary与NSMutableDictionary