Сроки программы на С - PullRequest
2 голосов
/ 07 декабря 2011

Мне нужно рассчитать время моей программы на С внутри самой программы (так как я синхронизирую несколько подразделов кода и выводю их время). Это должно быть сделано с точностью (по крайней мере) миллисекунды. Насколько я понимаю, функции time.h работают только на секунду. Есть ли другой способ сделать это?

Ответы [ 2 ]

2 голосов
/ 07 декабря 2011

Вы можете использовать функцию clock() из <time.h>:

Функция clock () возвращает приблизительное время процессора, используемое программой.

Вы делите возвращаемое значение на макрос CLOCKS_PER_SEC, чтобы получить величину времени в секундах, и если вы хотите, чтобы время в миллисекундах, вы могли умножить значение на 1000, то есть:

double get_time_as_ms(void) {
   return ((double)(clock() * 1000) / CLOCKS_PER_SEC);
}

Или, точнее,иметь начало и конец clock_t, а затем вычислить разницу:

double duration_as_ms(clock_t start, clock_t end) {
    return ((double)(end - start) * 1000) / CLOCKS_PER_SEC;

}

clock_t start = clock(); /* start of program */
/* ... */
clock_t end = clock(); /* end of program */
/* ... */
printf("Duration: %fms\m", duration_as_ms(start, end));

РЕДАКТИРОВАТЬ: Просто подумал, я бы добавил, общее значение для CLOCKS_PER_SEC равно 1000000,Это означает, что значение, возвращаемое clock(), будет сто тысячной доли секунды.Поэтому с точностью до одной тысячной миллисекунды (микросекунды).

2 голосов
/ 07 декабря 2011

Вы можете попробовать функцию gettimeofday, если время имеет точность в микросекунды.

...