c++11 日期和时间工具-(std::chrono::steady_clock)(std::chrono::high_resolution_clock)

定义于头文件 <chrono>
std::chrono 库

chrono 库定义三种主要类型以及工具函数和常用 typedef 。

  • 时钟
  • 时长
  • 时间点

决不会调整的单调时钟

std::chrono::steady_clock
class steady_clock;          (C++11 起) 

类 std::chrono::steady_clock 表示单调时钟。此时钟的时间点无法减少,因为物理时间向前移动。此时钟与壁钟时间无关(例如,它能是上次重启开始的时间),且最适于度量间隔。

std::chrono::steady_clock 满足平凡时钟 (TrivialClock) 的要求。

成员类型
成员类型定义
rep表示时钟时长中计次数的算术类型
period表示时钟计次周期的 std::ratio 类型,单位为秒
durationstd::chrono::duration<rep, period>
time_pointstd::chrono::time_point<std::chrono::steady_clock>
成员常量

constexpr bool is_steady

[静态]

稳定时钟标志,始终为 true

返回表示当前时钟值的 time_point

std::chrono::steady_clock::now
 
  1. static std::chrono::time_point<std::chrono::steady_clock>

  2. now() noexcept; (C++11 起)

返回表示当前时间的时间点。

参数

(无)

返回值

表示当前时间的时间点。

调用示例

 
  1. #include <iostream>

  2. #include <vector>

  3. #include <numeric>

  4. #include <chrono>

  5. volatile int sink;

  6. int main()

  7. {

  8. for (auto size = 1ull; size < 1000000000ull; size *= 100)

  9. {

  10. // 记录开始时间

  11. auto start = std::chrono::steady_clock::now();

  12. // 做一些工作

  13. std::vector<int> v(size, 100);

  14. sink = std::accumulate(v.begin(), v.end(), 0u); // 确保其副效应

  15. // 记录结束时间

  16. auto end = std::chrono::steady_clock::now();

  17. std::chrono::duration<double> diff = end - start;

  18. std::cout << std::fixed << "Time to fill and iterate a vector of "

  19. << size << " ints : " << diff.count() << " s\n";

  20. }

  21. }

输出

拥有可用的最短嘀嗒周期的时钟

std::chrono::high_resolution_clock
class high_resolution_clock;      (C++11 起) 

类 std::chrono::high_resolution_clock 表示实现提供的拥有最小计次周期的时钟。它可以是 std::chrono::system_clock 或 std::chrono::steady_clock 的别名,或第三个独立时钟。

std::chrono::high_resolution_clock 满足平凡时钟 (TrivialClock) 的要求。

成员类型
成员类型定义
rep表示时钟的时期中计次数的算术类型
period表示时钟计次周期的 std::ratio 类型,单位为秒
durationstd::chrono::duration<rep, period>
time_pointstd::chrono::time_point<std::chrono::high_resolution_clock>
成员常量

constexpr bool is_steady

[静态]

若时间间隔计次始终为常量,即纵使在外部时钟调整的情况下,调用 now() 的返回值亦单调递增,则为 true ,否则为 false

返回表示时钟当前值的 std::chrono::time_point

std::chrono::high_resolution_clock::now
 
  1. static std::chrono::time_point<std::chrono::high_resolution_clock>

  2. now() noexcept; (C++11 起)

返回表示当前时间的时间点。

参数

(无)

返回值

表示当前时间的时间点。

调用示例

 
  1. #include <iostream>

  2. #include <vector>

  3. #include <numeric>

  4. #include <chrono>

  5. volatile int sink;

  6. int main()

  7. {

  8. for (auto size = 1ull; size < 1000000000ull; size *= 100)

  9. {

  10. // 记录开始时间

  11. auto start = std::chrono::high_resolution_clock::now();

  12. // 做一些工作

  13. std::vector<int> v(size, 42);

  14. sink = std::accumulate(v.begin(), v.end(), 0u); // 确保其副效应

  15. // 记录结束时间

  16. auto end = std::chrono::high_resolution_clock::now();

  17. std::chrono::duration<double> diff = end - start;

  18. std::cout << "Time to fill and iterate a vector of "

  19. << size << " ints : " << diff.count() << " s\n";

  20. }

  21. }

输出

c++11 日期和时间工具-(std::chrono::steady_clock)(std::chrono::high_resolution_clock)-CSDN博客

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值