Что такое использование 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
.:)
Наконец, учтите, что, хотя ваши системные часы могут быть неустойчивыми, если ваши часы с высоким разрешением являются более высокими, это значительно упрощает некоторые игры, которые вы должны играть, чтобы время всегда перетекало вперед.
В общем, да, это может потерпеть неудачу, но когда у вас есть это, это очень полезно. Множество образцов - ваши друзья.:)