Как я могу узнать, что мой `std :: chrono :: high_resolution_clock` соответствует псевдониму` stable_clock` или `system_clock`, или другого? - PullRequest
1 голос
/ 07 марта 2020

Как я могу узнать, что мой 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, он говорит «Это может быть псевдоним std::chrono::system_clock или std::chrono::steady_clock или третий независимый тактовый генератор».

Итак, я хочу знать, как я могу проверить, какие псевдонимы соответствуют std::chrono::high_resolution_clock. Есть идеи?

1 Ответ

0 голосов
/ 07 марта 2020

Непосредственно из комментария Сэма Варшавчика. Вы можете использовать std::is_same из <type_traits>, чтобы проверить, совпадают ли два типа.

Вот пример для проверки трех стандартных часов в 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'
    ;
}

Демо

...