我怎么知道我的`std :: chrono :: high_resolution_clock`对应于`steady_clock`或`system_clock`或其他别名?

问题描述 投票:0回答:1

我怎么知道我的std::chrono::high_resolution_clock对应于steady_clocksystem_clock或其他别名?

许多网站和书籍都提供了使用system_clock的示例,这些示例可能由于同步而回溯,以测量功能花费的时间。我认为这不是衡量时间的好主意。相反,我认为我们应该使用std::chrono::steady_clock

有时使用std::chrono::high_resolution_clock。根据URL https://en.cppreference.com/w/cpp/chrono/high_resolution_clock,它表示It may be an alias of std::chrono::system_clock or std::chrono::steady_clock, or a third, independent clock.

所以,我想知道如何检查std::chrono::high_resolution_clock对应的别名。有什么想法吗?

c++ chrono
1个回答
0
投票

直接来自Sam Varshavchik的评论。您可以使用type_trait std::is_same检查两种类型是否相同。

这里是检查chrono中三个标准时钟的示例:

#include <chrono>
#include <iostream>
#include <type_traits>

int main() {
    using namespace std::chrono;

    std::cout << std::boolalpha
        << std::is_same_v<system_clock, high_resolution_clock> << '\n'
        << std::is_same_v<system_clock, steady_clock> << '\n'
        << std::is_same_v<high_resolution_clock, steady_clock> << '\n'
    ;
}

Demo

© www.soinside.com 2019 - 2024. All rights reserved.