一.boost::timer
1.timer一旦被声明,它的构造函数就启动了计时工作,之后就可以随时用elapsed()函数简单地测量自对象创建后所流逝的时间。当有些代码需要优化时,用它来测试提速了多少很不错。
2.但是timer不适合高精度的时间测量任务,它的精度依赖于操作系统或编译器,难以做到跨平台

#include<boost/timer.hpp>
#include<iostream>
using namespace boost;
using namespace std;

int main()
{
timer t;
cout << t.elapsed_max()/3600 << "h" << endl;
cout << t.elapsed_min() << endl;
for(int i=0;i<10000;i++)
for(int j=0;j<100000;j++)
int x=0;
cout << t.elapsed() << endl;//time unit second
}

0.596523h//在windows下是596.523h,但是在linux下是这个结果的原因是精度的不同,win32的精度是毫秒(1000),而linux下是微秒(1000000)
1e-06
3.35

二.boost::progress_timer
progress_timer继承了timer的全部能力,主要是会在析构时自动输出时间

#include<boost/progress.hpp>
using namespace boost;
int main()
{
progress_timer t;
int test;
for(int i=0;i<10000;i++)
for(int j=0;j<10000;j++)
test++;
double t1 = t.elapsed();
std::cout << "time:" << t1 << std::endl;
for(int i=0;i<10000;i++)
for(int j=0;j<10000;j++)
test++;
double t2 = t.elapsed();
std::cout << "time:" << t2 << std::endl;
}

time:0.29
time:0.62
0.62 s//destructor


日期

#include<boost/date_time.hpp>
#include<iostream>
using namespace boost::gregorian;
using namespace std;

int main()
{
date d(2011,4,5);
cout << d << endl;
}

2011-Apr-05