C clock()
функция просто возвращает меня нуль. Я пытался использовать различные типы без улучшения... Действительно ли это - хороший способ измерить время с хорошей точностью?
#include <time.h>
#include <stdio.h>
int main()
{
clock_t start, end;
double cpu_time_used;
char s[32];
start = clock();
printf("\nSleeping 3 seconds...\n\n");
sleep(3);
end = clock();
cpu_time_used = ((double)(end - start)) / ((double)CLOCKS_PER_SEC);
printf("start = %.20f\nend = %.20f\n", start, end);
printf("delta = %.20f\n", ((double) (end - start)));
printf("cpu_time_used = %.15f\n", cpu_time_used);
printf("CLOCKS_PER_SEC = %i\n\n", CLOCKS_PER_SEC);
return 0;
}
Sleeping 3 seconds... start = 0.00000000000000000000 end = 0.00000000000000000000 delta = 0.00000000000000000000 cpu_time_used = 0.000000000000000 CLOCKS_PER_SEC = 1000000
Платформа: Intel 32 бита, Redhat Linux, gcc 3.4.6
Часы ()
отчеты используются время процессора. Сон ()
не использует время процессора. Таким образом, ваш результат, вероятно, точно правильный, просто не то, что вы хотите.
Призыв Сон ()
не будет использовать любое время процессора. Вы должны увидеть мало разницу, хотя. Я исправил ошибку «Несоответствие типа PrintF» в этой строке:
printf("start = %.20f\nend = %.20f\n", start, end);
, и он дал разумные результаты на моей машине:
start = 1419
end = 1485
delta = 66
cpu_time_used = 0.000066000000000
CLOCKS_PER_SEC = 1000000
Вы можете попробовать GetTimeOfDay ()
, чтобы получить реальное время, проведенное запуск вашей программы.
Человек-часы
. Это не возвращает то, что вы думаете, это. Также MAN GETTIMEOFDAY
- это скорее всего, вы хотите.
Clock_T - это целочисленный тип. Вы не можете распечатать его с% F. См. Ответ Фреда Почему значение равно 0.
printf("start = %.20f\nend = %.20f\n", start, end);
должно быть:
printf("start = %d\nend = %d\n", start, end);