C++11计时器:chrono库介绍
C++11有了chrono库,可以在不同系统中很容易的实现定时功能。
要使用chrono库,需要#include,其所有实现均在std::chrono namespace下。注意标准库里面的每个命名空间代表了一个独立的概念。
chrono是一个模版库,使用简单,功能强大,只需要理解三个概念:duration、time_point、clock
一 、时钟-CLOCK
chrono库定义了三种不同的时钟:
二、这三个时钟有什么区别呢?
system_clock就类似Windows系统右下角那个时钟,是系统时间。明显那个时钟是可以乱设置的。明明是早上10点,却可以设置成下午3点。
steady_clock则针对system_clock可以随意设置这个缺陷而提出来的,他表示时钟是不能设置的。
high_resolution_clock则是一个高分辨率时钟。
这三个时钟类都提供了一个静态成员函数now()用于获取当前时间,该函数的返回值是一个time_point类型,
system_clock除了now()函数外,还提供了to_time_t()静态成员函数。用于将系统时间转换成熟悉的std::time_t类型,得到了time_t类型的值,在使用ctime()函数将时间转换成字符串格式,就可以很方便地打印当前时间了。
三、持续的时间 - duration
td::chrono::duration<int,ratio<60,1>> ,表示持续的一段时间,这段时间的单位是由ratio<60,1>决定的,int表示这段时间的值的类型,函数返回的类型还是一个时间段duration
std::chrono::duration<double,ratio<60,1>>
由于各种时间段(duration)表示不同,chrono库提供了duration_cast类型转换函数。
duration_cast用于将duration进行转换成另一个类型的duration。
duration还有一个成员函数count(),用来表示这一段时间的长度
四、时间点 - time_point
std::chrono::time_point 表示一个具体时间,如上个世纪80年代、你的生日、今天下午、火车出发时间等,只要它能用计算机时钟表示。鉴于我们使用时间的情景不同,这个time point具体到什么程度,由选用的单位决定。一个time point必须有一个clock计时
设置一个时间点:
std::time_point<clock类型> 时间点名字
另一个实例:
输出结果:
PS D:\时间操作 chrono 库\bin\Debug> .\main.exec1==c2c1==c3c2==c3c1= 1c2= 60c3= 3600c4= 360000011000100000010000000002023-01-04 22:32:432023-01-0422:32:432023-01-04 22:32:43banana apple pear耗时: 733400纳秒 (0.0007334秒)PS D:\时间操作 chrono 库\bin\Debug>
到此这篇关于C++11计时器:chrono库介绍的文章就介绍到这了,更多相关C++ chrono计时器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!