timer库概述

2019-04-03  本文已影响0人  食梦狸猫

timer库提供简易的度量时间和进度显示功能。
boost的timer库有两个组件:timer使用的是标准C/C++库函数,cpu_timer使用操作系统的API精度更高。

timer库库包含三个小组件:timers计时器,progress_timer,进度指示器progress_display

timer

timer类是一个小型计时器,提供毫秒级别的计时精度。

#include <boost/timer.hpp>
....
timer t;
t.elapsed_max() //计时器能表示的最大值
t.elapsed_min() //计时器能表示的最小值
t.elapsed() //程序执行已经流逝的时间

timer对象一旦被声明,它的构造函数就会开始计时工作。timer的计时用到了<ctime>的std::clock()函数,此函数会返回自进程启动以来的clock数。

timer的精度依赖操作系统或编译器。适合要求不高的任务。不适合大跨度时间测量和跨平台。

progress_timer

progress_timer继承自timer,在析构时自动输出时间。progress_timer的默认输出是std::cout,可以在构造时指定输出流。

stringstream ss;
{
  progress_timer t(ss);
}

progress_display

progress_display可以在控制台上显示程序的执行进度,且能提供一个友好的用户界面。构造函数接受一个进度基数。重载的+=和++用来增加技术,更新进度。

#include <boost/progress.hpp>
using namespace boost;
.....
vector<string> v(100);
progress_display pd(v.size());

for(auto& x : v )
{
    cout<<x<<endl;
    ++pd;
}

date_time

date_time库包括两个部分,分别是处理日期的gregorian和处理时间的posix_time

#include<boost/date_time/gregorian/gregorian.hpp>
#include<boost/date_time/posix_time/posix_time.hpp>
date d1; //not_a_date_time
date d2 (2010,1,1);
date d3 (2000,Jan,1);
date d4 (d2);
date d5 = from_string("1992-12-31");
assert(d1 == date(not_a_date_time));
assert(d2 == d4);
assert(d3 < d4);

day_clock是一个天级别的时钟,静态成员函数会返回一个当天的日期对象

cout<<day_clock::local_day() <<endl;
cout<<day_clock::universal_day() <<endl;
date d(2014,1,1);
assert(d.year() == 2014);
assert(d.month() == 4);
assert(d.day() == 1);
date:: ymd_type ymd = d.year_month_day()
//返回一个ymd对象
assert(ymd.date == 4)
to_simple_string(date d);
to_tm(date);
date_from_tm(tm);
days dd1(255);
weeks w(3);
months m(5);
years y(2);
date d1(2000,1,1);
d1 += days(10);
d1 -= years(10);
date_period dp1(date(2014,1,1),days(20));
date_period dp2(date(2014,1,1),date(2013,1,1));
date d(2006,11,26);
day_iterator d_iter(d);
++d_iter;
assert(d_iter == date(2006,11,27));

year_iterator y_iter(*d_iter);
++y_iter;
assert(y_iter->year() == 2014);

week_iterator
month_iterator
....
date d(2019,4,2);
date d_start(d.year(),d.month(),1);
date d_end = d.end_of_month();

for(day_iterator d_iter(d_start); d_iter != d_end; ++d_iter)
{
  cout<< *d_iter <<" "<<d_iter->day_of_week()<<endl;
}

处理时间

time_duration td(1,10,30,1000);
hours h(1);
minutes m (10);
seconds s(30);
milliseconds ms(1);

time_duration td2 = h+m+s+ms;

assert (td * 5 == td2 * 2);
ptime p(date(2014,6,8),hours(1));
ptime p1 = time_from_string("2014-6-8 01:00:00");
ptime p1 = from_time_t(std::time(0));
tm t = to_tm(p1);

for(time_iterator t_iter(p, minutes(10)); t_iter < p + hours(1); ++ t_iter)
...
上一篇 下一篇

猜你喜欢

热点阅读