使用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的使用——计算时间流逝相关推荐

  1. Goland中time.Timer and time.Ticker

    本文介绍 Timer , Tick , Sleep 的实现机制.版本是 GO 1.9 . thinking:goland ticker + redis 实现纳秒级的定时器.redis作为注册[配置中心 ...

  2. [PaddleSeg源码阅读] PaddleSeg Validation 中添加 Boundary IoU的计算(3)——添加Boundary IoU

    经过前面: PaddleSeg Validation 中添加 Boundary IoU的计算(1)--val.py文件细节提示 PaddleSeg Validation 中添加 Boundary Io ...

  3. pandas中使用rolling.corr函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations)、例如,计算两种商品销售额之间的3个月的滚动相关性

    pandas中使用rolling.corr函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations).例如,计算两种商品销售额之间的3个月的滚动相关性 目录

  4. python使用numpy中的np.mean函数计算数组的均值、np.var函数计算数据的方差、np.std函数计算数组的标准差

    python使用numpy中的np.mean函数计算数组的均值.np.var函数计算数据的方差.np.std函数计算数组的标准差 目录

  5. ASP.NET AJAX入门系列(11):在多个UpdatePanle中使用Timer控件

    本文将使用Timer控件更新两个UpdatePanel控件,Timer控件将放在UpdatePanel控件的外面,并将它配置为UpdatePanel的触发器,翻译自官方文档.<?XML:NAME ...

  6. java捕获定时器抛出的异常_详细了解Java中定时器Timer的使用及缺陷分析

    在需要定时并且周期执行任务时,在最初的JAVA工具类库中,Timer可以实现任务的定时周期执行的需求,不过有一定的缺陷,比如,Timer是基于绝对时间而非相对时间,因此Timer对系统时钟比较敏感,本 ...

  7. boost::gil模块沿 x 轴计算梯度的方法的示例

    boost::gil模块沿 x 轴计算梯度的方法的示例 实现功能 C++实现代码 实现功能 boost::gil模块沿 x 轴计算梯度的方法的示例 C++实现代码 #include <boost ...

  8. Boost:使用OpenCL和OpenCL计算直方图的代码示例

    Boost:使用OpenCL和OpenCL计算直方图的代码示例 实现功能 C++实现代码 实现功能 ,Boost的compute模块使用OpenCL和OpenCL计算直方图的代码示例 C++实现代码 ...

  9. Metro App中使用Timer

    在设定的时间结束后,执行相应的方法.     使用metro的Windows.System.Threading命名空间下的ThreadPoolTimer类,可以创建一个Timer.     Creat ...

最新文章

  1. 刻意练习:Python基础 -- Task11. 魔法方法
  2. 用示波器恢复软盘里的游戏,这个程序员大神的操作太硬核了
  3. JAVA-数据库之JDBC连接MySQL数据库
  4. SAP Spartacus lock directive锁住元素所有子元素及设置FOCUS_GROUP_ATTR的行为
  5. bigdecimal 平均数_MapReduce实例-必须用Combine--求平均数
  6. 鸿蒙应用开发培训笔记02:应用开发入门
  7. windows 编译FFMPEG
  8. 笔记本计算机内存都多大,你的电脑速度慢吗?笔记本电脑“内存”到底要多大才够用?...
  9. 声纹、语音识别入门书籍推荐
  10. java标识符命名规范之驼峰命名法
  11. OpenJDK源码赏析之三:Java命令参数的读取处理流程
  12. 习题9-3 平面向量加法 (15 分)
  13. 修改人人商城服务器时间,修改收货地址 · 人人商城二次开发常用文档,超详细,微擎开发微擎二次开发【持续更新】 · 看云...
  14. 没有技术含量,但能每天赚50刀的GGAD赚钱办法分享
  15. linux sftp 命令_Linux Sftp命令示例
  16. excel减法函数_发现EXCEL隐藏功能,SUMIFS函数居然可以多条件求差值看了不后悔...
  17. Xcode插件所在的目录:~/Library/Application Support/Developer/Shared/Xcode/Plug-ins
  18. 千兆以太网和快速以太网有什么区别?
  19. 两台主机的vmware虚拟机相互连通
  20. 1005:地球人口承载力估计(C C++)

热门文章

  1. java spi机制_Java是如何实现自己的SPI机制的? JDK源码(一)
  2. eclipse查看git地址_使用Git进行版本控制
  3. mysql数据库的逻辑架构和存储引擎
  4. Ubuntu 首次给root用户设置密码
  5. poj2464扫描线好题,树状数组解法
  6. __name__=__main__
  7. java数据库连接类,已经把数据库操作的方法都封装好了
  8. PCA主成分分析 特征降维 opencv实现
  9. 浏览器差异总结,可以用此判断浏览器版本(转)
  10. 词典对象 NSDictionary与NSMutableDictionary