Если вы пытаетесь измерить «время процессора» (а не «время настенных часов, потраченное на ожидание нажатия клавиши пользователем»), тогда ...
Представьте, что ОС имееттаймер, который генерирует IRQ 10 раз в секунду, а обработчик IRQ просто делает ticks++
;и clock()
это просто return ticks;
.В этом случае CLOCKS_PER_SEC
будет равно 10.
Теперь, если вы вызываете clock()
один раз непосредственно перед тем, как происходит IRQ таймера, и снова сразу после того, как происходит IRQ таймера, разница между возвращаемыми значениями может быть 1(равный 100 мс) даже значительно меньше времени, прошедшего между вызовами на clock()
.
В качестве альтернативы;если вы вызываете clock()
один раз сразу после того, как IRQ таймера происходит, и снова непосредственно перед повторным IRQ таймера, разница между возвращаемыми значениями может быть 0, даже значительно больше времени, которое проходит между вызовами clock()
.
По сути, разница между значениями, возвращаемыми clock()
, составляет «до 1/CLOCKS_PER_SEC
раньше, чем вы думаете» и «до 1/CLOCKS_PER_SEC
больше, чем вы думаете».
Обратите внимание, что значение CLOCKS_PER_SEC
определяется реализацией.В зависимости от различных вещей (какая версия какой ОС работает на каком оборудовании, с какой библиотекой C) CLOCKS_PER_SEC
может быть чем угодно, может составлять всего 10 и может достигать 4 млрд.