来测量经过时间的常用方法是:当CPU频率可变时,基于时钟的时序是否可靠?
const clock_t START = clock();
// ...
const clock_t END = clock();
double T_ELAPSED = (double)(END - START)/CLOCKS_PER_SEC;
我知道这是不是测量实时的最好办法,但我不知道它的工作原理的系统上具有可变频率的CPU。这是错的吗?
来测量经过时间的常用方法是:当CPU频率可变时,基于时钟的时序是否可靠?
const clock_t START = clock();
// ...
const clock_t END = clock();
double T_ELAPSED = (double)(END - START)/CLOCKS_PER_SEC;
我知道这是不是测量实时的最好办法,但我不知道它的工作原理的系统上具有可变频率的CPU。这是错的吗?
有系统架构,改变CPU的频率,但有一个独立的和恒定的频率驱动系统时钟。人们会认为一个函数会返回一个独立于CPU频率的时间,但是这个代码要在每个系统上运行。
在可变时钟速度CPU上使用它并不好。
http://support.ntp.org/bin/view/Support/KnownHardwareIssues
NTP(网络时间prototcol)在Linux守护程序有问题吧。
大多数操作系统的有更准确的值某些API调用,一个例子是在Windows上,QueryPerformanceCounter的
http://msdn.microsoft.com/en-us/library/ms644904%28VS.85%29.aspx
推测CLOCKS_PER_SEC在头文件中定义为一个常量值。如果由该值表示的基本参数可能会发生变化,并且您不相应地更改常数,那么不,您的经过时间测量将不正确。 – sizzzzlerz 2010-11-24 16:45:57