当CPU频率可变时,基于时钟的定时是否可靠?

时间:2010-11-24 16:39:51

标签: c cpu clock frequency elapsed

衡量经过时间的常用方法是:

const clock_t START = clock();
// ...
const clock_t END = clock();
double T_ELAPSED = (double)(END - START) / CLOCKS_PER_SEC;

我知道这不是测量实时的最佳方法,但我想知道它是否适用于具有可变频率CPU的系统。这是错的吗?

2 个答案:

答案 0 :(得分:1)

在可变时钟速度CPU上使用是不好的。

http://support.ntp.org/bin/view/Support/KnownHardwareIssues

Linux上的NTP(网络时间prototcol)守护进程存在问题。

大多数操作系统都有一些API调用以获得更准确的值,例如在Windows上,QueryPerformanceCounter

http://msdn.microsoft.com/en-us/library/ms644904%28VS.85%29.aspx

答案 1 :(得分:1)

有些系统架构可以改变CPU的频率,但具有独立且恒定的频率来驱动系统时钟。有人会认为clock()函数会返回一个独立于CPU频率的时间,但必须在代码要运行的每个系统上进行验证。