2010-11-24 4 views
1

Обычный способ измерения затраченного времени является:Является ли синхронизация часов надежной, когда частота процессора является переменной?

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

Я знаю, что это не самый лучший способ для измерения в реальном времени, но мне интересно, если он работает на системе с переменной частотой процессора. Это просто неправильно?

+0

Предполагается, что CLOCKS_PER_SEC определяется в файле заголовка как постоянное значение. Если базовый параметр, представленный значением, может измениться, и вы не измените константу соответственно, тогда нет, ваше прошедшее измерение времени будет неправильным. – sizzzzlerz 2010-11-24 16:45:57

ответ

1

Есть системные архитектуры, которые изменяют частоту процессора, но имеют отдельную и постоянную частоту управлять системными часами. Можно было бы подумать, что функция clock() вернет время, не зависящее от частоты процессора, но это должно быть проверено в каждой системе, для которой код должен работать.

1

Неплохое использование на процессоре с переменной частотой вращения часов.

http://support.ntp.org/bin/view/Support/KnownHardwareIssues

NTP (Network Time prototcol) демон на Linux были проблемы с этим.

Большинство ОС имеют некоторые API вызовы для получения более точных значений, пример быть на окнах, QueryPerformanceCounter

http://msdn.microsoft.com/en-us/library/ms644904%28VS.85%29.aspx

Смежные вопросы