boost::timer

他们的结果是一样吗?不同的操作系统,时钟精度是不一样,结果自然不完全一样;但我说的不一样不是这一点小小的差异,而是在redhat9上t.elapsed()返回的竟然是 0 。boost::progress_timer也有同样问题,为什么 ? 
  
     boost::timer是一个clock()的非常简单的封装,简单到我不认为有理由存在于boost之样的库之中。基本只是下面的东西


 class timer 
 { 
  public: 
          timer()  { _start_time = clock(); }  
   void   restart()  { _start_time = clock(); }  
   double elapsed() const{ return  double(clock() - _start_time) / CLOCKS_PER_SEC; } 
  private: 
    clock_t _start_time; 
 }; // timer 
 


     所以抛开boost::timer这层包装来看,就是clock与sleep之间的问题了。为什么不用sleep就可以得到流逝的时间呢(cin.get()也不能得到)。推其原因在于linux平台上sleep时,clock是获得CPU被使用的时间。而这时进程会等待一个signal,这一段时间CPU不会被使用,clcok()认为时间没有流逝所致。而windows平台却是认为Sleep时也是有时间流逝的,而不是看CPU有没有被使用,我也是这么考虑的 :-)。这样一来两者之间就有了极大的不同。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值