2010-11-24 2 views
1

Ein üblicher Weg, die verstrichene Zeit zu messen ist:Ist das Clock-basierte Timing zuverlässig, wenn die CPU-Frequenz variabel ist?

const clock_t START = clock(); 
// ... 
const clock_t END = clock(); 
double T_ELAPSED = (double)(END - START)/CLOCKS_PER_SEC; 

Ich weiß, dass dies nicht der beste Weg ist, in Echtzeit zu messen, aber ich frage mich, ob es auf einem System mit einer variablen Frequenz CPU arbeitet. Ist es nur falsch?

+0

Vermutlich ist CLOCKS_PER_SEC in einer Header-Datei als konstanter Wert definiert. Wenn sich der zugrunde liegende Parameter, der durch den Wert repräsentiert wird, ändern kann und Sie die Konstante nicht entsprechend ändern, dann ist nein, Ihre Messung der verstrichenen Zeit ist nicht korrekt. – sizzzzlerz

+0

Wenn Sie Benchmarks durchführen, ist es am besten, den CPU-Frequenzregler zumindest vorübergehend auf "Leistung" zu stellen, damit Sie genaue Messungen erhalten, die durch Schwankungen der Taktgeschwindigkeit entkoppelt werden. –

Antwort

1

Es gibt Systemarchitekturen, die die Frequenz des CPU ändern, sondern haben eine separate und konstante Frequenz Fahre eine Systemuhr. Man würde denken, dass eine clock() Funktion eine Zeit unabhängig von der CPU-Frequenz zurückgeben würde, aber dies müsste auf jedem System verifiziert werden, auf dem der Code ausgeführt werden soll.

Verwandte Themen