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;
};