Что такое использование std:: chrono:: high_resolution_clock?

Сначала я подумал, что он может использоваться для измерения производительности. Но сказал, что std::chrono::high_resolution_clock может быть не устойчивым (is_steady может быть false). Также сказано, что std::chrono::high_resolution_clock может даже быть псевдонимом std::chrono::system_clock, который обычно не является устойчивым. Поэтому я не могу измерять временные интервалы с такими типами часов, потому что в любой момент часы могут быть скорректированы, и мои измерения будут неправильными.

В то же время я не могу преобразовать точки времени std::chrono::high_resolution_clock в календарное время, потому что у него нет метода to_time_t. Поэтому я не могу получить реальное время с этим типом часов.

Тогда для чего можно использовать std::chrono::high_resolution_clock для?

Ответ 1

Нет.

Извините, мой плохой.

Если у вас возникает соблазн использовать high_resolution_clock, выберите steady_clock. В libС++ и VS high_resolution_clock - это псевдоним типа steady_clock.

В gcc high_resolution_clock есть псевдоним типа system_clock, и я видел более одного использования high_resolution_clock::to_time_t на этой платформе (что неверно).

Использовать <chrono>. Но есть части <chrono>, которых следует избегать.

  • Не используйте high_resoulution_clock.
  • Избегайте использования .count() и .time_since_epoch(), если нет другого способа выполнить задание.
  • Избегайте duration_cast, если код не будет компилироваться без него, и вы желаете поведение с усечением по отношению к нулю.
  • Избегайте явного синтаксиса преобразования, если компиляция неявного преобразования.

Ответ 2

Я бы предположил, что одиночное использование часов с высоким разрешением может лежать.

Если ваш алгоритм использует множество измерений, любая ошибка должна быть средней, и вы должны иметь возможность измерять очень малые интервалы.

Я использовал часы с высоким разрешением для создания временных графиков в сетевых событиях, в противном случае мои интервалы были бы 0.:)

Наконец, учтите, что, хотя ваши системные часы могут быть неустойчивыми, если ваши часы с высоким разрешением являются более высокими, это значительно упрощает некоторые игры, которые вы должны играть, чтобы время всегда перетекало вперед.

В общем, да, это может потерпеть неудачу, но когда у вас есть это, это очень полезно. Множество образцов - ваши друзья.:)