Boost开发指南-1.2progress_timer

news2024/11/19 5:45:01

progress_timer

progress_timer也是一个计时器,它继承自timer,会在析构时自动输出时间,省去了timer手动调用elapsed()的工作,是一个用于自动计时相当方便的小工具。

progress_timer位于名字空间boost,为了使用progress_timer组件,需要包含头文件<boost/progress.hpp>,即:

#include <boost/progress.hpp>
using namespace boost;

用法

progress_timer继承了timer的全部能力,可以如timer那样使用。

progress_timer t;            //声明一个progress_timer对象
...                          //任意计算 处理工作
cout << t.elapsed() << endl; //输出流逝的时间

但它有更简单的用法,不需要任何的调用,只要声明progress_timer对象就可以了:

#include<boost/progress.hpp>
int main()
{
     boost::progress_timer t; //声明对象开始计时
     //do something
}                             //退出作用域 调用progress_timer的析构函数

这样,在程序退出(准确地说是离开main函数局部域)导致progress_timer析构时,会自动输出流逝的时间。显示输出:0.23s

如果要在一个程序中测量多个时间,可以运用花括号{}限定progress_timer的生命期

#include <boost/progress.hpp>
int main()
{
     {
          boost::progress_timer t;
          //do something...
     }
     {
          boost::progress_timer t;
          //do something...
     }
     ...
}

只需要声明progress_timer的实例就可完成所需的全部工作,非常容易。有了progress_timer,程序员今后在做类似性能测试等计算时间的工作时将会感到轻松很多。

类摘要

progress_timer的类摘要如下:

class progress_timer : public timer, noncopyable
{
public:
    explicit progress_timer();
    progress_timer(std::ostream& os);
    ~progress_timer();
};

progress_timer继承自timer,因此它的接口与timer相同,也很简单。唯一需要注意的是构造函数 progress_timer( std::ostream& os ),它允许将析构时的输出定向到指定的 IO 流里,默认是 std::cout。如果有特别的需求,可以用其他标准库输出流(ofstream、ostringstream)替换,或者用cout.rdbuf()重定向cout的输出。

例如,下面的代码把progress_timer的输出转移到了stringstream中,它可以被转换为字符串供其他应用使用:

stringstream ss; //一个字符串流对象
{
    progress_timer t(ss);  //要求progress_timer输出到ss中
}                          //progress_timer在这里析构,自动输出时间
cout << ss.str();

main.cpp

#include <sstream>
#include <iostream>
using namespace std;

// disable pragma warning
#define BOOST_ALLOW_DEPRECATED_HEADERS

#include <boost/progress.hpp>
using namespace boost;

//

int main()
{
	{
		boost::progress_timer t;

	}
	{
		boost::progress_timer t;
	}

	stringstream ss;
	{
		progress_timer t(ss);
	}
	cout << ss.str();
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/543246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅谈PMO对组织战略的支持︱美团骑行事业部项目管理中心负责人边国华

美团骑行事业部项目管理中心负责人边国华先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;浅谈PMO对组织战略的支持。大会将于6月17-18日在北京举办&#xff0c;更多内容请浏览会议日程 议题内容简要&#xff1a; 战略是组织运行的…

Mysql【基础篇】—— mysql基础知识

Mysql【基础篇】—— mysql基础知识 ~&#x1f60e; 前言&#x1f64c;关系型数据库SQl 总结撒花&#x1f49e; &#x1f60e;博客昵称&#xff1a;博客小梦 &#x1f60a;最喜欢的座右铭&#xff1a;全神贯注的上吧&#xff01;&#xff01;&#xff01; &#x1f60a;作者简介…

CPU、内存使用率告警问题处理

可能原因 CPU 或内存使用率过高&#xff0c;容易引起服务响应速度变慢、服务器登录不上等问题。而引起 CPU 或内存使用率过高可能由硬件、系统进程、业务进程或者木马病毒等因素所致。 排查思路 定位消耗 CPU 或内存的具体进程。对 CPU 或内存占用率高的进程进行分析。 如果是…

Mac下webstorm安装运行ant desgin pro踩坑记录

最近在跟做鱼皮大佬的《用户中心》项目练手&#xff0c;由于是2022年的项目而且不是用Mac做的&#xff0c;遇到了很多问题&#xff0c;在此记录一下。 1.安装node.js版本过高&#xff0c;目前官网最新长期支持版本是18.16.0 LTS。视频中安装的是16.14.0 LTS&#xff0c;如果遇…

文档处理容易“翻车”,来看看CCIG上的大咖怎么说

一、前言 哪怕在互联网时代高速发展的今天&#xff0c;文档依然是人们在日常生活、工作中产生的信息的重要载体。 学生的作业、开具的发票、医生的医嘱、合同、简历、金融票据等都是通过文档来呈现的&#xff0c;它在我们的生活中随处可见。 现在我们为了更高效、安全的开展业务…

金铲铲之战8.5版本

金币篇 1、如果有强大的经济基础&#xff0c;那么这个游戏赢下来回变的超级简单&#xff0c;因此获取更多的金币是吃鸡最基础也是最关键的保障 说明&#xff1a;金币可以用来升级、刷新商店和购买人口 金币来源&#xff1a; 1、基础金币&#xff1a;根据野怪波次给予金币奖励…

Spread.NET 16.1.0 Winform Crack-new

添加对将表单控件添加到工作表的支持。 2023 年 5 月 18 日 - 16:24新版本 特征 窗体 支持表单控件- 添加了对将表单控件添加到工作表的支持。表单控件是可以插入到工作表中以处理数据并按指定处理数据的对象。可以轻松引用表单控件并与单元格数据进行交互。有 8 种不同类型的表…

第三十五章 多个组件状态数据共享

之前&#xff0c;我们的求和案例只是一个组件&#xff0c;属于是自己玩自己&#xff0c;接下来我们通过多个组件&#xff0c;通过redux实现它们之间的数据互通。 步骤1&#xff1a;更改项目目录结构 src |--containers | |--Count |--redux | |--actions | |--count.js | |-…

内网渗透(七十八)之域权限维持之ACL滥用(下)

ACL滥用(下) 7、GenericAll 权限 应用于组 再来看看GenericAll 权限 应用于组如何进行权限维持。 由于用户hack是普通的域用户,因此他没有往Domain Admins 组添加用户的权限,如图所示,以用户hack 身份往Domain Admins 组中添加用户,可以看到,添加用户失败。 现在我们…

目标检测,将voc格式转化为coco格式详细过程

在目标检测方法研究中&#xff0c;数据集的格式至关重要&#xff0c;为了减小模型的训练时长&#xff0c;需要现在小数据集进行模型研究&#xff0c;从而需要将VOC数据集转化为coco格式。下面一步一步来看&#xff1a; 1. 下载VOC数据集 Pascal VOC&#xff0c;即Pattern Ana…

windows2003系统SSL证书单站点部署https

本文将讲解&#xff0c;在windows 2003操作系统下&#xff0c;IIS 6 环境的服务器ssl证书安装教程。 安装前&#xff0c;请准备好SSL证书&#xff0c;没有的话&#xff0c;可以点这里申请SSL证书>>> 部署前请退出服务器内安装的杀毒软件&#xff08;360、金山、安全…

Linux 安装Qt6 教程及错误解决

在Linux环境&#xff0c;通常为Ubuntu&#xff0c;安装Qt开发环境&#xff0c;与Windows安装相比&#xff0c;还是稍显繁琐&#xff0c;需要多做几个步骤。 这里的Ubuntu版本采用的是ubuntu-22.04.2-desktop-amd64&#xff0c;所以&#xff0c;比旧版本会少很多坑&#xff0c;…

链表题目强化练

目录 前言 两数相加 删除链表的倒数第N个结点 环形链表 相交链表 合并 K 个升序链表 复制带随机指针的链表 前言 初学者在做链表的题目时有一个特点&#xff0c;就是每看一个链表的题都觉得很简单&#xff0c;但真正到了扣代码的时候不是这卡一块就是那卡一块。这是因为…

No module named PyQt5

背景&#xff1a;将Python文件转成APP&#xff0c;在编辑器中运行没有问题&#xff0c;一使用pyinstaller转成app就报错了 尝试了各种网上的解法都无效&#xff0c;最后是GPT4解决的 Q&#xff1a; 我遇到一个奇怪的问题&#xff0c;我在python文件中&#xff0c;引用了pyqt5…

Android Termux安装MySQL数据库 | 公网安全远程连接【cpolar内网穿透】

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备&#xff0c;尽管最初并非设计为服务器&#xff0c;但是随着技术的进步我们可以将Android配置为生产力工具&#xff0c;变成一个随身…

【数据结构与算法】常见排序算法

文章目录 概述1、冒泡排序&#xff08;Bubble Sort&#xff09;1.1 步骤1.2 动图演示1.3 java代码实现 2、选择排序&#xff08;Selection Sort&#xff09;2.1 步骤2.2 动图演示2.3 java代码实现 3、插入排序&#xff08;Insertion Sort&#xff09;3.1 步骤3.2 动图演示3.3 j…

测试-用例篇

软件测试的生命周期 需求分析 - 测试计划 - 测试设计、测试开发 - 测试执行 - 测试评估 测试用例要素 测试环境、操作步骤、测试数据、预期结果 测试用例的要素没有执行结果。 测试用例要素不需要执行结果&#xff0c;因为执行结果需要执行完测试用例才会知道&#xff0c;没…

代码随想录算法训练营day45 | 70. 爬楼梯 (进阶),322. 零钱兑换,279.完全平方数

代码随想录算法训练营day45 | 70. 爬楼梯 &#xff08;进阶&#xff09;&#xff0c;322. 零钱兑换&#xff0c;279.完全平方数 70. 爬楼梯 &#xff08;进阶&#xff09;解法一&#xff1a;动态规划 322. 零钱兑换解法一&#xff1a;动态规划 279.完全平方数解法一&#xff1…

秒懂算法 | 共识算法之Raft算法模拟数

01、Leader选举 存在A、B、C三个成员组成的Raft集群&#xff0c;刚启动时&#xff0c;每个成员都处于Follower状态&#xff0c;其中&#xff0c;成员A心跳超时为110ms&#xff0c;成员B心跳超时为150ms&#xff0c;成员C心跳超时为130ms&#xff0c;其他相关信息如图1所示。 ■…

2024王道数据结构考研丨第三章:栈和队列

2024王道数据结构考研笔记专栏将持续更新&#xff0c;欢迎 点此 收藏&#xff0c;共同交流学习… 文章目录 第三章&#xff1a;栈和队列3.1栈&#xff08;stack&#xff09;3.1.1栈的基本概念3.1.2 栈的顺序存储3.1.3栈的链式存储 3.2队列&#xff08;Queue&#xff09;3.2.1队…