衡量经过时间的常用方法是:
const clock_t START = clock();
// ...
const clock_t END = clock();
double T_ELAPSED = (double)(END - START) / CLOCKS_PER_SEC;
我知道这不是测量实时的最佳方法,但我想知道它是否适用于具有可变频率CPU的系统。这是错的吗?
答案 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频率的时间,但必须在代码要运行的每个系统上进行验证。