所以我读了这个boost docs,但我仍然没有看到如何做这么简单的事情
int main() {
//stuff
startTimer();
// do stuff
int i =getTimerValue();
//stuff
}
所以要获得我已经完成的东西的执行时间。怎么做这个?
答案 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;
// ...
}