std::chrono::high_resolution_clock有什么用?

What are the uses of std::chrono::high_resolution_clock?

起初我以为它可以用于性能测量。但是std::chrono::high_resolution_clock可能不稳定的是saidis_steady可能是false)。也有人说std::chrono::high_resolution_clock甚至可能是std::chrono::system_clock的别名一般不太稳。所以我不能用这种时钟来测量时间间隔,因为时钟随时可能被调整,我的测量就会出错。

同时我无法将std::chrono::high_resolution_clock时间点转换为日历时间,因为它没有to_time_t方法。所以我也无法用这种类型的时钟获得实时

std::chrono::high_resolution_clock有什么用呢?

我建议单独使用高分辨率时钟可能是谎言。

如果您的算法使用许多 测量值,那么任何误差都应该被平均掉,您应该能够测量非常小的间隔。

我已经使用高分辨率时钟在网络事件中建立时间线,否则我的时间间隔会是 0。 :)

最后,考虑一下虽然您的系统时钟可能不稳定,但如果您的高分辨率时钟稳定,这会大大简化您必须玩的一些游戏以确保时间始终向前流动。

总而言之,是的,它可能会失败,但是当你拥有它时,它会非常有帮助。大量样品是您的朋友。 :)

有none.

对不起,my bad

如果您想使用 high_resolution_clock,请选择 steady_clock。在 libc++ 和 VS 上 high_resolution_clock 无论如何都是 steady_clock 的类型别名。

在 gcc 上 high_resolution_clocksystem_clock 的类型别名,我在这个平台上看到 high_resolution_clock::to_time_t 不止一次使用(这是错误的)。

使用<chrono>。但是 <chrono> 的某些部分你应该避免。

  • 不要使用 high_resolution_clock
  • 避免使用 .count().time_since_epoch(),除非别无他法。
  • 避免 duration_cast 除非没有它代码将无法编译,并且您希望截断为零的行为。
  • 如果隐式转换可以编译,请避免使用显式转换语法。