steady_clock
结构
表示从不调整且以统一速率向前移动的时钟。
语法
struct steady_clock;
备注
steady_clock
是单调时钟,这意味着它报告的时间只向前移动。 对 now
的调用返回的值始终小于或等于对 now
的下一个调用返回的值。
steady_clock
可确保刻度之间的时间是恒定的,因此比使用系统时钟更适合测量间隔。 系统时钟提供时钟时间。 使用时钟时间测量运行时间的问题在于,在测量时间间隔时可能会修改时钟时间。 它可以通过与网络上的另一个时钟同步、转换到夏令时等方式进行修改。 steady_clock
不受这些调整的约束,因此它成为跟踪运行时间的首选方法。
high_resolution_clock
是 steady_clock
的 typedef。 在 Windows 上,steady_clock
包装 QueryPerformanceCounter
函数。
示例
#include <chrono>
#include <thread>
#include <iostream>
using namespace std::chrono;
int main()
{
auto begin = steady_clock::now();
std::this_thread::sleep_for(std::chrono::seconds(1));
auto end = steady_clock::now();
std::cout << "Elapsed seconds: "
<< duration_cast<seconds>(end - begin).count()
<< "s\n";
std::cout << "Elapsed milliseconds: "
<< duration_cast<milliseconds>(end - begin).count()
<< "ms\n";
std::cout << "Elapsed microseconds: "
<< duration_cast<microseconds>(end - begin).count()
<< "us\n";
std::cout << "Elapsed nanoseconds: "
<< duration_cast<nanoseconds>(end - begin).count()
<< " ns\n";
return 0;
}
Elapsed seconds: 1s
Elapsed milliseconds: 1007ms
Elapsed microseconds: 1007266us
Elapsed nanoseconds: 1007266700 ns
便利类型别名
名称 | 描述 |
---|---|
steady_clock::duration |
在 Microsoft 的实现中,它是定义为 duration<long long, nano> 的 nanoseconds 的同义词。 它表示以十亿分之一秒为单位的持续时间。 |
steady_clock::period |
在 Microsoft 的实现中,它是定义为 std::ratio<1i64, 1000000000i64> 的 nano 的同义词。 它表示持续时间内每个刻度之间的时间(以秒为单位)(十亿分之一秒)。 |
steady_clock::rep |
long long 的同义词,它是 Microsoft 实现中用于表示 steady_clock::duration 中时钟刻度数的类型 |
steady_clock::time_point |
time_point<steady_clock> 的同义词。 用于表示此时钟的 time_point 。 |
公共函数
函数 | 说明 |
---|---|
now |
从 steady_clock 返回当前时间作为 time_point 值。 |
公共常数
“属性” | 描述 |
---|---|
steady_clock::is_steady |
保存 true 。 steady_clock 是稳定的。 这意味着你只能使用此时钟获取事件之前的时间、事件之后的时间,以及使它们可靠地相减以获取事件的持续时间,因为在该时段内不会调整该时钟。 |
要求
标头:<chrono>
命名空间:std::chrono
另请参阅
<chrono>
file_clock class
high_resolution_clock
local_t
结构
system_clock
结构
tai_clock
类
utc_clock
类
头文件引用