経過時間を測定する一般的な方法は次のとおりです。
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 (ネットワーク タイム プロトコル) デーモンには問題がありました。
ほとんどの OS には、より正確な値を取得するための API 呼び出しがいくつかあります。たとえば、Windows では、QueryPerformanceCounter
http://msdn.microsoft.com/en-us/library/ms644904%28VS.85%29.aspx
CPU の周波数を変更するシステム アーキテクチャがありますが、システム クロックを駆動するための別の一定の周波数があります。clock()
関数は CPU 周波数に依存しない時間を返すと考える人もいるかもしれませんが、これはコードを実行する各システムで検証する必要があります。