來測量經過時間的常用方法是:當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