C ++ подсчет времени выполнения ошибки - PullRequest
0 голосов
/ 20 июня 2010

Я пытаюсь подсчитать выполнение функции в моем коде (это занимает более часа), и я использую clock (), но я получаю некоторые ошибки, так как рассчитанное время является отрицательным.Я делаю так:

long double time;
clock_t start, t_end;

t_start = clock();
algorithm->execute();
t_end = clock();

time = ((long double) t_end - t_start) / CLOCKS_PER_SEC;

cout << time << endl;

Я делаю что-то не так?

Ответы [ 3 ]

2 голосов
/ 20 июня 2010

CLOCKS_PER_SEC равен 1000000, и clock () возвращает 32-разрядное значение со знаком, поэтому через 36 минут оно станет отрицательным и обернется примерно через 72 минуты.

Подробнее о том, какизмерять длительное время выполнения.

1 голос
/ 20 июня 2010

Вы проверили, чтобы убедиться, что ни один из вызовов clock() не возвращает -1?

Функция clock () возвращает процессорное время с программы или - 1, если эта информация нет.

Другой способ сделать это:

#include <time.h>

time_t start, end;
time(&start);
algorithm->execute();
time(&end);
double diff = difftime(end, start);
0 голосов
/ 20 июня 2010

Я не уверен на 100%, но вы применяете только t_end к длинному двойнику ???

Разве это не должно быть:

((long double)t_end - (long double)t_start)/CLOCKS_PER_SEC

или

((long double)(t_end - t_start))/CLOCKS_PER_SEC

???

...