steady_clock 结构

表示从不调整且以统一速率向前移动的时钟。

语法

struct steady_clock;

备注

steady_clock 是单调时钟,这意味着它报告的时间只向前移动。 对 now 的调用返回的值始终小于或等于对 now 的下一个调用返回的值。

steady_clock 可确保刻度之间的时间是恒定的,因此比使用系统时钟更适合测量间隔。 系统时钟提供时钟时间。 使用时钟时间测量运行时间的问题在于,在测量时间间隔时可能会修改时钟时间。 它可以通过与网络上的另一个时钟同步、转换到夏令时等方式进行修改。 steady_clock 不受这些调整的约束,因此它成为跟踪运行时间的首选方法。

high_resolution_clocksteady_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 保存 truesteady_clock稳定的。 这意味着你只能使用此时钟获取事件之前的时间、事件之后的时间,以及使它们可靠地相减以获取事件的持续时间,因为在该时段内不会调整该时钟。

要求

标头<chrono>

命名空间:std::chrono

另请参阅

<chrono>
file_clock class
high_resolution_clock
local_t 结构
system_clock 结构
tai_clock
utc_clock
头文件引用