首先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无法把进度显示输出与程序的输出分离