美文网首页
timer库概述

timer库概述

作者: 食梦狸猫 | 来源:发表于2019-04-03 22:54 被阅读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>
  • 处理日期
    空的构造函数会创建一个值为not_a_date_time的无效日期。顺序传入年月日值则创建一个对应的date对象.
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有返回年月日的成员函数
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);
  • 转换为tm结构
    date支持和c的tm结构相互转换
to_tm(date);
date_from_tm(tm);
  • 日期长度
    日期长度是度量时间长度的一个标量。
    date_duration可以使用构造函数创建一个日期长度,成员函数days()返回时长的天数。
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表示日期区间
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精确到微秒,甚至纳秒
    time_duration的构造函数指定时分秒微秒来构造,超出的时间会自动进位或借位。也支持四则运算
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时同时指定date和time_duration,等一一个日期加当天时间偏移量.
ptime p(date(2014,6,8),hours(1));
ptime p1 = time_from_string("2014-6-8 01:00:00");
  • 操作时间点对象
    ptime = date+time_duration支持四则运算和字符串转换,还支持单向转换为tm/time_t结构
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)
...

相关文章

  • timer库概述

    timer库提供简易的度量时间和进度显示功能。boost的timer库有两个组件:timer使用的是标准C/C++...

  • Boost程序库完全开发指南

    一、Boost程序库总论 二、时间与日期 timer库:timer,progress_timer,progress...

  • iOS开发之进阶篇(10)—— Timer

    概述 本文将要讨论以下三种timer: NSTimer (Timer) CADisplayLink GCD 原理 ...

  • 定时任务

    轻量定时任务调度库: 1、threading.Timer2、schedule 一、threading.Timer ...

  • Java 定时器

    Java 定时器 1. 概述 Timer 可以按计划执行重复的任务或者定时执行指定任务,这是因为 Timer 内部...

  • 为什么你不该用Timer

    概述 在Java开发中,用过定时功能的同学一定不会对Timer感到陌生。不过,除了Timer,在Java 5之后又...

  • 定时器之Timer

    概述 Timer 是可以指定将来的某个时间在后台线程中调度任务的工具。每个Timer对应一个后台线程用来顺序执行这...

  • SDL系列讲解(一) 简介

    什么是 SDL SDL库分为 Video、Audio、CD-ROM、Game、Joystick 和 Timer 等...

  • TIMER (Tumor Immune Estimation R

    TIMER (Tumor Immune Estimation Resource)数据库也是用高通量测序(RNA-S...

  • iOS DispatchSourceTimer 定时器

    1. 概述 说起计时器,很多开发人员第一时间就会想起Timer,但是随着使用的深入,慢慢就发现Timer其实不是很...

网友评论

      本文标题:timer库概述

      本文链接:https://www.haomeiwen.com/subject/evkobqtx.html