我怎么知道我的std::chrono::high_resolution_clock
对应于steady_clock
或system_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
对应的别名。有什么想法吗?
直接来自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'
;
}