【发布时间】:2012-10-27 03:05:21
【问题描述】:
std::system_clock 和 std::steady_clock 有什么区别? (举例说明不同的结果/行为会很棒)。
如果我的目标是精确测量函数的执行时间(如基准测试),std::system_clock、std::steady_clock 和 std::high_resolution_clock 之间的最佳选择是什么?
【问题讨论】:
-
首先,system_clock 可能不稳定。
-
@CharlesSalvia 我不能代表其他平台,但
system_clock在 Windows 上不稳定。在 Windows 上,任何具有足够权限的用户都可以将系统时间更改为任意值。此外,如果需要,时间同步服务可以向后调整系统时间。我希望大多数其他平台具有允许调整系统时间的类似功能。 -
@Charles:我知道的大多数 POSIX 盒子都受到类似影响,如果用户更改时间,它们的时间也会发生变化。
-
这个问题的视频回答:youtube.com/watch?v=P32hvk8b13M&t=48m44s
-
@CharlesSalvia。根据我自己分析数十个 PC 数据采集系统的时序输出的经验,来自计算机的时间并不稳定。 Linux、Windows 和使用的具体系统调用未知,但共同点是后续时间值之间经常出现负时间差。直线时间不是常态。