提升计时器:如何在需要时获取时间?

时间:2010-11-05 11:45:12

标签: c++ boost timer

所以我读了这个boost docs,但我仍然没有看到如何做这么简单的事情

int main() {
    //stuff
    startTimer();
    // do stuff
    int i =getTimerValue();
    //stuff
}

所以要获得我已经完成的东西的执行时间。怎么做这个?

3 个答案:

答案 0 :(得分:19)

使用boost::timer

#include <boost/timer.hpp>
int main() {   
  boost::timer t; // start timing
  ...
  double elapsed_time = t.elapsed();
  ...
}

请注意boost::progress_timer的析构函数将显示时间。因此,如果您的目标只是显示函数中间经过的时间,请使用范围。

int main() {  
  {
    boost::progress_timer t; // start timing
    ...
  } // elapsed time displayed here when t is destructed
  ...
}

答案 1 :(得分:5)

将其替换为

#include <boost/progress.hpp>
void function()
{
   progress_timer t;  // start timing
   // do stuff
   return 0;
}

然后你会得到你想要的东西,而不是printf

计时器在构造时开始并在销毁时显示(即在fn退出处)。这是在C ++中执行作用域任务(计时,锁定等)的典型RAII方法。

答案 2 :(得分:0)

基于所提到的特征还有以下想法,即析构函数显示经过的时间。

#include "boost/timer/timer.hpp"
int main()
{
  // ...
  boost::timer:auto_cpu_timer *boost_timer = new boost::timer:auto_cpu_timer();
  // we want to measure the time of execution of this part of code
  // ...
  delete boost_timer; // show the elapsed time
  // then we can repeat
  boost_timer = new boost::timer:auto_cpu_timer();
  // ...
  delete boost_timer;
  // ...
}