Таймер повышения: как получить время, когда мне нужно? - PullRequest
7 голосов
/ 05 ноября 2010

Итак, я прочитал это повышение документации , но я все еще не понимаю, как сделать такую ​​простую вещь

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

чтобы получить время выполнения того, что я сделал. Как это сделать?

Ответы [ 3 ]

19 голосов
/ 05 ноября 2010

Использовать 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
  ...
}
5 голосов
/ 05 ноября 2010

Замените это на

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

и вы получите то, что хотите, не используя printf.

Таймер запускается при строительстве и отображается при разрушении (т. Е. При выходе из Fn.). Это типичный RAII способ выполнения задач с заданной областью (синхронизация, блокировка и т. Д.) В C ++.

0 голосов
/ 15 марта 2014

Существует также следующая идея, основанная на упомянутой особенности, что истекшее время показывается деструктором.

#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;
  // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...