boost库之chrono 学习记录

chrono 库定义三种主要类型以及工具函数和常用 typedef
·时钟
·时长
·时间点

时钟

时钟由起点(或纪元)及计次频率组成。例如,时钟可以拥有 1970 年 1 月 1 日的纪元,和每一秒的计次。 C++ 定义数种时钟类型
定义于头文件 <chrono>,定义于命名空间 std::chrono

时钟Value
system_clock (C++11)来自系统范畴实时时钟的挂钟时间(类)
steady_clock (C++11)决不会调整的单调时钟(类)
high_resolution_clock(C++11)拥有可用的最短嘀嗒周期的时钟(类)
is_clock(C++20)确定类型是否为时钟 (Clock)(类模板) (变量模板)
utc_clock(C++20)协调世界时 (UTC) 的时钟 (Clock)(类)
tai_clock(C++20)国际原子时 (TAI) 的时钟 (Clock)(类)
gps_clock(C++20)GPS 时间的时钟 (Clock)(类)
file_clock(C++20)用于文件时间的时钟 (Clock)(typedef)
local_t(C++20)表示本地时间的伪时钟 (类)
时间点

时间点是从特定时钟的纪元开始经过的时间时长。
定义于头文件 <chrono>,定义于命名空间 std::chrono

时间点Value
time_point(C++11)时间中的点(类模板)
clock_time_conversion(C++20)定义如何转换一个时钟的时间点为另一个的特性类(类模板)
clock_cast(c++20转换一个时钟的时间点为另一个(函数模板)
时长

时长由时间跨度组成,定义为某时间单位的某个计次数。例如,“ 42 秒”可表示为由 42 个 1 秒时间点位的计次所组成的时长。
定义于头文件 <chrono>,定义于命名空间 std::chrono

时间点Value
duration(C++11)时间区间(类模板)
template<
  class Rep,
   class Period = std::ratio<1>
> class duration;

下面列举了一些由类模板duration衍生出来的时长数据类型

类型定义
std::chrono::nanosecondsduration</至少 64 位的有符号整数类型/, std::nano>
std::chrono::microsecondsduration</至少 55 位的有符号整数类型/, std::micro>
std::chrono::millisecondsduration</至少 45 位的有符号整数类型/, std::milli>
std::chrono::secondsduration</至少 35 位的有符号整数类型/>
std::chrono::minutesduration</至少 29 位的有符号整数类型/, std::ratio<60>>
std::chrono::hoursduration</至少 23 位的有符号整数类型/, std::ratio<3600>>
一个简单的例子
#include <iostream>
#include <chrono>
#include <ctime>
 
long fibonacci(unsigned n)
{
    if (n < 2) return n;
    return fibonacci(n-1) + fibonacci(n-2);
}
 
int main()
{
    auto start = std::chrono::system_clock::now();
    std::cout << "f(42) = " << fibonacci(42) << '\n';
    auto end = std::chrono::system_clock::now();
 
    std::chrono::duration<double> elapsed_seconds = end-start;
    std::time_t end_time = std::chrono::system_clock::to_time_t(end);
 
    std::cout << "finished computation at " << std::ctime(&end_time)
              << "elapsed time: " << elapsed_seconds.count() << "s\n";
}

可能的输出:

f(42) = 267914296
finished computation at Mon Oct  2 00:59:08 2017
elapsed time: 1.88232s
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青草地溪水旁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值