失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > c++11 日期和时间工具-(std::chrono::steady_clock)(std::chrono::high_resolution_clock)

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

时间:2018-11-21 23:27:04

相关推荐

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) 的要求。

成员类型

成员常量

返回表示当前时钟值的 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)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。