È il tempo di clock a base affidabile quando la frequenza della CPU è variabile?
Domanda
Un modo comune per misurare il tempo trascorso è:
const clock_t START = clock();
// ...
const clock_t END = clock();
double T_ELAPSED = (double)(END - START) / CLOCKS_PER_SEC;
So che questo non è il modo migliore per misurare in tempo reale, ma mi chiedo se funziona su un sistema con una CPU a frequenza variabile. E 'solo che non va?
Soluzione
Ci sono architetture di sistema che modifica la frequenza della CPU, ma hanno una frequenza separata e costante per guidare un orologio di sistema. Si potrebbe pensare che una funzione clock()
restituirebbe un tempo indipendente dalla frequenza della CPU, ma questo avrebbe dovuto essere verificate in ogni sistema il codice è destinato a funzionare su.
Altri suggerimenti
Non è bene per l'uso su una CPU velocità di clock variabile.
http://support.ntp.org/bin/view/Support/KnownHardwareIssues
NTP (Network Time prototcol) daemon su linux ha avuto problemi con esso.
La maggior parte del sistema operativo sono alcune chiamate API per valori più precisi, un esempio è su Windows, QueryPerformanceCounter
http://msdn.microsoft.com/ it-it / library / ms644904% 28VS.85% 29.aspx