Prof(1)
С помощью команды prof(1) можно выяснить, сколько времени было истрачено на выполнение различных фрагментов программы, а также сколько раз вызывалась та или иная функция. Чтобы использовать эту команду, необходимо откомпилировать файлы с опцией -p. После выполнения полученной программы будет сформирован файл mon.out, используемый командой prof для получения статистики. Кроме mon.out, используется файл a.out (или другой выполняемый файл).
Чтобы получить результаты профилирования для нашего примера, необходимо предпринять следующие шаги:
- Откомпилировать файлы с опцией -p:
cc -p restate.c oppty.c pft.c rfe.c
- Выполнив программу, сформировать файл mon.out:
a.out -opr
- Выполнить команду prof:
prof a.out
Ниже приведен результат выполнения последнего шага. Выполняя одну и ту же программу несколько раз подряд, мы можем получать несколько различные цифровые данные. Заметим также, что статистика, выдаваемая для такой маленькой программы как наша, не слишком полезна.
%Time Seconds Cumsecs #Calls msec/call Name 50.0 0.02 0.02 14 1.2 ungetc 50.0 0.02 0.03 mcount% 0.0 0.00 0.03 1 0. rfe 0.0 0.00 0.03 4 0. getopt 0.0 0.00 0.03 1 0. pft 0.0 0.00 0.03 1 0. creat 0.0 0.00 0.03 4 0. printf 0.0 0.00 0.03 2 0. profil 0.0 0.00 0.03 1 0. fscanf 0.0 0.00 0.03 1 0. _doscan 0.0 0.00 0.03 6 0. atof 0.0 0.00 0.03 1 0. _filbuf 0.0 0.00 0.03 3 0. strchr 0.0 0.00 0.03 1 0. strcmp 0.0 0.00 0.03 4 0. ldexp 0.0 0.00 0.03 4 0. frexp 0.0 0.00 0.03 1 0. fopen 0.0 0.00 0.03 1 0. _findiop 0.0 0.00 0.03 1 0. oppty 0.0 0.00 0.03 4 0. _doprnt 0.0 0.00 0.03 1 0. main 0.0 0.00 0.03 3 0. fcvt 0.0 0.00 0.03 3 0. fwrite 0.0 0.00 0.03 4 0. _xflsbuf 0.0 0.00 0.03 1 0. _wrtchk 0.0 0.00 0.03 2 0. _findbuf 0.0 0.00 0.03 4 0. _bufsync 0.0 0.00 0.03 3 0. getenv 0.0 0.00 0.03 2 0. isatty 0.0 0.00 0.03 2 0. ioctl 0.0 0.00 0.03 1 0. malloc 0.0 0.00 0.03 1 0. open 0.0 0.00 0.03 1 0. read 0.0 0.00 0.03 2 0. sbrk 0.0 0.00 0.03 1 0. strcpy 0.0 0.00 0.03 1 0. strlen 0.0 0.00 0.03 5 0. write