定义于头文件 <chrono>
std::chrono
库
chrono
库定义三种主要类型以及工具函数和常用 typedef 。
时钟时长时间点
决不会调整的单调时钟
std::chrono::steady_clock
class steady_clock;(C++11 起)
类std::chrono::steady_clock
表示单调时钟。此时钟的时间点无法减少,因为物理时间向前移动。此时钟与壁钟时间无关(例如,它能是上次重启开始的时间),且最适于度量间隔。
std::chrono::steady_clock
满足平凡时钟(TrivialClock) 的要求。
成员类型
成员常量
返回表示当前时钟值的 time_point
std::chrono::steady_clock::now
static std::chrono::time_point<std::chrono::steady_clock>now() noexcept; (C++11 起)
返回表示当前时间的时间点。
参数
(无)
返回值
表示当前时间的时间点。
调用示例
#include <iostream>#include <vector>#include <numeric>#include <chrono>volatile int sink;int main(){for (auto size = 1ull; size < 1000000000ull; size *= 100){// 记录开始时间auto start = std::chrono::steady_clock::now();// 做一些工作std::vector<int> v(size, 100);sink = std::accumulate(v.begin(), v.end(), 0u); // 确保其副效应// 记录结束时间auto end = std::chrono::steady_clock::now();std::chrono::duration<double> diff = end - start;std::cout << std::fixed << "Time to fill and iterate a vector of "<< size << " ints : " << diff.count() << " s\n";}}
输出
拥有可用的最短嘀嗒周期的时钟
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) 的要求。
成员类型
成员常量
返回表示时钟当前值的 std::chrono::time_point
std::chrono::high_resolution_clock::now
static std::chrono::time_point<std::chrono::high_resolution_clock> now() noexcept; (C++11 起)
返回表示当前时间的时间点。
参数
(无)
返回值
表示当前时间的时间点。
调用示例
#include <iostream>#include <vector>#include <numeric>#include <chrono>volatile int sink;int main(){for (auto size = 1ull; size < 1000000000ull; size *= 100){// 记录开始时间auto start = std::chrono::high_resolution_clock::now();// 做一些工作std::vector<int> v(size, 42);sink = std::accumulate(v.begin(), v.end(), 0u); // 确保其副效应// 记录结束时间auto end = std::chrono::high_resolution_clock::now();std::chrono::duration<double> diff = end - start;std::cout << "Time to fill and iterate a vector of "<< size << " ints : " << diff.count() << " s\n";}}
输出
如果觉得《c++11 日期和时间工具-(std::chrono::steady_clock)(std::chrono::high_resolution_clock)》对你有帮助,请点赞、收藏,并留下你的观点哦!