boost::timer 和progress_timer 使用

  1 #include<iostream>
  2 #include<boost/timer.hpp>
  3 using namespace boost;
  4 using namespace std;
  5 int main(void)
  6 {
  7     timer t;
  8
  9      long long sum = 0;  
 10      for (int i = 0; i < 10000000 ; i++)  
 11          sum = sum + i;
 12     //sleep(1);
 13      cout<<"now timer elasped:"<<t.elapsed()<<"s"<<endl;
 14     
 15     return 0;

 16 }

注意:

timer 接口简单,轻巧好用,适用于大部分程序计时任务。不适合高精度的时间测量任务。 它的精度依赖于操作系统或编译器,难以做到跨平台。可提供的最大跨度只有几百个小时,如果需要以天、月甚至年作为时间的单位则不能使用timer。 应该使用 date_time库。

progress_timer

继承于timer 使用可与timer一致:

progress_timer t;

//do someting

cout<<t.elapsed()<<endl;

更为简单的方法:在程序中创建一个对象后,程序正常退出后,会调用progress_timer 的析构函数,自动输出流逝时间。

int main(void)

{

    boost::progress_timer t;

    //do someting

    return 0;

}//

在源代码中查看析构函数:

namespace boost {


class progress_timer : public timer, private noncopyable
{
 
 public:
  explicit progress_timer( std::ostream & os = std::cout )
     : timer(), noncopyable(), m_os(os) {}
  ~progress_timer()
  {
    try
    {
 
      std::istream::fmtflags old_flags = m_os.setf( std::istream::fixed,
                                                   std::istream::floatfield );
      std::streamsize old_prec = m_os.precision( 2 );
      m_os << elapsed() << " s\n"  << std::endl;
      m_os.flags( old_flags );
      m_os.precision( old_prec );
    }

    catch (...) {} // eat any exceptions
  } // ~progress_timer
 private:
  std::ostream & m_os;
};

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值