测量经过时间的常用方法是:
const clock_t START = clock();
// ...
const clock_t END = clock();
double T_ELAPSED = (double)(END - START) / CLOCKS_PER_SEC;
我知道这不是测量实时的最佳方法,但我想知道它是否适用于具有可变频率 CPU 的系统。只是错了吗?
在可变时钟速度 CPU 上使用并不好。
http://support.ntp.org/bin/view/Support/KnownHardwareIssues
Linux 上的 NTP(网络时间协议)守护进程存在问题。
大多数操作系统都有一些 API 调用以获得更准确的值,例如在 windows 上,QueryPerformanceCounter
http://msdn.microsoft.com/en-us/library/ms644904%28VS.85%29.aspx
有一些系统架构可以改变 CPU 的频率,但有一个单独的恒定频率来驱动系统时钟。有人会认为一个clock()
函数会返回一个与 CPU 频率无关的时间,但这必须在每个要运行代码的系统上进行验证。