boost学习之二(时间 timer库)

首先timer是一个很小的库,提供简单的度量时间和进度显示功能。一般性能测试等需要计时的任务可以用这个简单的库

timer有两个组件组成 早起的timer(v1)和新的cpu_timer(V2)。  cpu_timer(v2) 之后详细说明,本篇文章暂时只讲解timer(v1)

timer(v1) 库包含三个组件。   计时器timer、progress_timer和进度指示器progress_display.

1、timer是一个小型的计时器,提供毫秒级别的计时精度。程序员可以手工控制使用。

   用法:

#include "boost/progress.hpp"
#include <iostream>
using namespace boost;
int main()
{
 	timer t;
	// 可度量的最大时间,一小时为单位
 	std::cout << "max timespan:" << t.elapsed_max()/3600 << "h" << std::endl;
	// 可度量的最小时间,以秒为单位
 	std::cout << "min timespan:" << t.elapsed_min() << "s" << std::endl;
	// 输出已经流逝的时间
 	std::cout << "now time elapsed:" << t.elapsed() << "s" << std::endl;
	getchar();
	return 0;
}
注意包含的头文件#include "boost/progress.hpp" 必须是你自己配置好的例如在vs2012中的附加包含目录下要把boost所在位置注明

打印结果是


2、progress_timer

  progress_timer也是一个计时器,它继承自timer。不过在调用析构时会自动输出时间

  用法:

#include <iostream>
#include <windows.h>
#include "boost/progress.hpp"
using namespace boost;
int main()
{
	// 注意生命一个对象之后当生命周期结束的时候会自动调用析构函数从而实现打印, 所以可以直接用{}来确定他的生命周期
	{
		progress_timer t;			// 第一个计时
		Sleep(2000);
	}
	{
		progress_timer t2;			// 第二个计时器
		Sleep(3000);
	}

	// 也可以不加大括号用法和timer一样
	{
		progress_timer t3;						// 第三个计时器
		Sleep(4000);
		std::cout << t3.elapsed() << std::endl;
	}

	getchar();
	return 0;
}
打印结果是:

注意最后打印了两次4一次是调用的elapsed()函数打印的 ,一次是生命周期直接调用的析构函数打印的。

3、progress_display可以在控制台上显示程序的执行进度,他能够提供一个友好的用户界面,即类似于load界面。

   用法:

#include <iostream>
#include "boost/progress.hpp"
#include <windows.h>
#include <vector>

using namespace boost;

int main()
{
	std::vector<std::string> v(100);
	progress_display pd(v.size());

	std::vector<std::string>::iterator it = v.begin();
	for (; it != v.end(); ++it )
	{
		Sleep(1000);
		pd++;
	}

	getchar();
	return 0;
}
打印结果:

实际上就是打印一个进度条来显示当前进度的

注意:progress_display无法把进度显示输出与程序的输出分离




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值