LINUX.ORG.RU

time.h, С и времи выполнения


0

0

В общем, нужно узнать, сколько какая функция работает. Делал это когда-то и забыл как.

Примерно так выглядело

1 time=2();

код

#ifdef DEBUG

printf("%3", 2()-time);

#endif

Вот что поставить вместо 1, 2, 3?

Забыл. Время надо выводить в милисекундах? Кто-нибудь знает? Помогите, пожалуйста.

anonymous
Ответ на: комментарий от Murr

Спасибо за ответ.

Но к сожалению эта функция, т.е. time измеряет время с точностью до секунды. А большинство функций работает немного меньше чем секунда.

А как с точностью до милисек измерить?

anonymous
()

есть gettimeofday

если нужна более точная статистика, то можно на IA32 выдернуть из asm/msr.h макросы вроде rdtsc. коэффициент пропорциональности для одного такта можно получить замером времени выполнения sleep(5).

Murr ★★
()

а clock(3) не годится?

dilmah ★★★★★
()

Только насчет rdtsc - возможно TSC на разных процессорах несинхронизированы. У Intel всё может быть...

Murr ★★
()

Очевидно, нужно ПРОЦЕССОРНОЕ время, а не астрономическое?

Тогда, если программа работает недолго (<20 мин.) то man 3 clock самое портабильное решение.

НО! clock переполняет переменную (вариация int) по-разному на разных системах - на 32 битных в районе 20 минут.

Можно написАть враппер над clock, который каждую минуту - две дергает свою переменную на основе того, что выдает clock()

Стандартный подход сегодня - getrusage man 2 getrusage

Die-Hard ★★★★★
()

А зачем всё это нужно?

А не проще воспользоваться профайлером, если нужно узнать время выполнения функции и другая статистика?

опция gcc: -pg

man: gprof(1)

jellyfish
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.