c++11 boost库 - timer、progress_timer、progress_display

2018-07-10 11:31:51

timer 类是用来计算程序流过的 cpu 时间,精度不是特别高。内部是用 clock 数来统计的,CLOCKS_PER_SEC 代表每秒多少 clock。 

类摘要

class timer {
public:
           timer();                        // postcondition: elapsed()==0
  
   void    restart();                      // post: elapsed()==0
   double  elapsed() const;                // return elapsed time in seconds
   double elapsed_max() const;             // return estimated maximum value for elapsed()
   double elapsed_min() const;             // return minimum value for elapsed()
};


progress_timer 继承自 timer ,只是它在自己销毁的时候会自动打印经过的时间,还可以在构造函数里指定输出到特定流,默认为 std::cout。

preogress_timer(std::ostream& os);
#include <iostream>
#include <boost/timer.hpp>
using namespace std;
using namespace boost;

int main(){
    timer t;
	  
    //打印每秒的clock数。
    cout << CLOCKS_PER_SEC << endl;
    cout << "max timespan:"
        << t.elapsed_max() /3600 << "h" <<endl;
    cout << "min timespan:"
        << t.elapsed_min() << "s" << endl;
    
    int i = 0;
    for(;i<100000000;i++){
  		int b = i;
    }
    cout << "now time elapsed:"
        << t.elapsed() <<"s" << endl;
    
    //归0
    t.restart();
    cout << "after restart:"
        << t.elapsed() <<"s" << endl;
}
[root@192 c++]# g++ -std=c++11 main.cpp 
[root@192 c++]# 
[root@192 c++]# 
[root@192 c++]# ./a.out 
1000000
max timespan:2.56205e+09h
min timespan:1e-06s
now time elapsed:0.22s
after restart:0s
0.22 s


progress_display 可以简单打印出进度到标准输出。

#返回当前的计数,0-100
progress_display::count()
#include <iostream>
#include <vector>
using namespace std;

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

int main()
{
    vector<string> v(100);

	//传入进度基数
    progress_display pd(v.size());

	//遍历vector
    for (auto& x : v)
    {
    	sleep(1);
        ++pd;
    }
}


 备注

1.编译器版本gcc4.8.5,运行环境centos7 64位
2.本文只做简单记录用,详细用法请参考 Boost Library
3..原文地址http://www.freecls.com/a/2712/9a

  

©著作权归作者所有
收藏
推荐阅读
简介
天降大任于斯人也,必先苦其心志。