Сначала вы должны использовать CLOCKS_PER_SEC
, а не магическое число.
В любом случае, если вы находитесь в системе POSIX, CLOCKS_PER_SEC
определяется как миллион (то же значение, которое вы используете) в POSIX, так что это, вероятно, не ваша проблема.
Вы должны знать, что clock
измеряет только время, когда процессор запускает вашу программу пользовательского пространства, а не время, проведенное в ядре или в другом процессе. Это важно, потому что если вы вызываете системный вызов или функцию, которая вызывает системный вызов, или если ваш процесс прерывается ядром, результат clock
может показаться вам неправильным.
См. Например это:
time_t time1, time2;
time1 = clock();
sleep(5);
time2 = clock();
разница clock
возвращаемого значения до и после (правильно нормализовано с помощью CLOCKS_PER_SEC
), вызов sleep
может составлять 0 секунд.
Если вы хотите измерить прошедшее время во время выполнения функции или блока кода, вам лучше использовать функцию gettimeofday
.