Boost库学习笔记 2.1 Boost时间与日期timer库
1. timer库介绍
timer库是一个很小库,提供简易度量时间和进度显示功能,可以用于性能测试等需要计时的任务。
timer库包含三个组件,分别是timer、progress_timer、 progress_display.
2. timer类
timer类可以测量时间的流逝,是一个小型的计时器,提供毫秒级别的计时精度和操作函数。
timer类引用头文件:
#include <boost/timer.hpp>
using namespace boost;
timer类公共成员函数:
class timer{
......
public:
timer(); // 构造函数,计时开始
void restart(); // 计时重新开始
double elapsed(); // 已经流逝的时间(秒)
double elapsed_min(); // 可度量的最小时间(秒),Win32平台精确度最小能够达到毫秒,Linux精确到微秒。
double elapsed_max(); // 可度量的最大时间(秒)
......
};
timer类使用示列代码:
/* Boost时间与日期timer库 timer类使用示列代码
* Lixiujie www.xiujie.cn
* 2011-11-01
*/
#include <string>
#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <algorithm>
using namespace std;
#include <boost/timer.hpp>
using namespace boost;
int main(int argc, char *argv[]){
timer t;
// timer 能记录的最长时间
cout << "max timespan:" << t.elapsed_max()/3600 << "h" << endl;
// timer 能记录的最短时间
cout << "min timespan:" << t.elapsed_min() << "s" << endl;
// 流逝时间
cout << "now time elapsed:" << t.elapsed() << "s" << endl;
long i = 0, y = 0;
// 重新开始
t.restart();
for (i=0;i<2000000000;i++){
y++;
}
cout << "for i++ time elapsed:" << t.elapsed() << "s" << endl;
y = 0;
t.restart();
for (i=0;i<2000000000;++i){
++y;
}
cout << "for ++i time elapsed:" << t.elapsed() << "s" << endl;
return 0;
}
timer类使用示列代码屏幕输出:
max timespan:596.523h
min timespan:0.001s
now time elapsed:0s
for i++ time elapsed:5.937s
for ++i time elapsed:5.953s
3. progress_timer类
progress_timer继承timer的全部能力, 析构时自动输出流逝的时间。
progress_timer类引用头文件:
#include <boost/progress.hpp>
using namespace boost;
progress_timer类公共成员函数:
progress_timer: public timer, ......{
......
public:
progress_timer(std::ostream & os = std::cout); // 构造,默认输出流为屏幕
~progress_timer(); // 析构,自动输出流逝时间(秒),精度到小数后两位。
......
};
progress_timer类使用示列代码:
/* Boost时间与日期timer库 progress_timer类使用示列代码
* Lixiujie www.xiujie.cn
* 2011-11-01
*/
#include <string>
#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <algorithm>
using namespace std;
#include <boost/progress.hpp>
using namespace boost;
int main(int argc, char *argv[]){
progress_timer t;
return 0;
}
progress_timer类使用示列代码屏幕输出:
0.00 s
4. progress_display类
progress_display类是一个独立的类与timer库上其它两个组件没有联系。主要功能产生一个进度条界面。
不好用,容易被其它屏幕输出打断,不做过多的介绍。
使用示列代码:
/* Boost时间与日期timer库 progress_display类使用示列代码
* Lixiujie www.xiujie.cn
* 2011-11-01
*/
#include <string>
#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <algorithm>
using namespace std;
#include <boost/progress.hpp>
using namespace boost;
int main(int argc, char *argv[]){
progress_display pd(100);
int i = 0;
for(i=0;i<100;++i){
++pd;
}
return 0;
}
示列代码屏幕输出:
0% 10 20 30 40 50 60 70 80 90 100%
|----|----|----|----|----|----|----|----|----|----|
***************************************************