boost库之chrono 学习记录

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

时钟

时钟由起点(或纪元)及计次频率组成。例如,时钟可以拥有 1970 年 1 月 1 日的纪元,和每一秒的计次。 C++ 定义数种时钟类型
定义于头文件 ,定义于命名空间 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) 表示本地时间的伪时钟 (类)

时间点

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

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

时长

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

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

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

类型 定义
std::chrono::nanoseconds duration至少 64 位的有符号整数类型/, std::nano>
std::chrono::microseconds duration至少 55 位的有符号整数类型/, std::micro>
std::chrono::milliseconds duration至少 45 位的有符号整数类型/, std::milli>
std::chrono::seconds duration至少 35 位的有符号整数类型/>
std::chrono::minutes duration至少 29 位的有符号整数类型/, std::ratio<60>>
std::chrono::hours duration至少 23 位的有符号整数类型/, std::ratio<3600>>

一个简单的例子

#include 
#include 
#include 
 
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 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

你可能感兴趣的:(#,c++_boost库,c++,编程语言)