PROF(1) PROF(1) НАЗВАНИЕ prof - вывод результатов профилирования СИНТАКСИС |prof [-t] [-c] [-a] [-n] [-o] [-x] [-g] [-z] [-h] [-s] [-m файл_профиля | [прогр] ОПИСАНИЕ Команда prof интерпретирует файл_профиля, подготовлен- ный с помощью функции monitor(3C). При этом читается таблица имен объектного файла прогр (по умолчанию a.out) и соотносится с файлом_профиля (по умолчанию mon.out). Для каждого внешнего объекта из секции команд выдается время (в процентах), затраченное на выполнение участка программы между адресом данного объекта и адре- сом следующего. Кроме того, печатается число вызовов каждой функции и среднее время в миллисекундах, затра- ченное на один вызов. Следующие взаимоисключающие опции определяют критерий сортировки выводимых строк: -t Сортировать по уменьшению доли общего времени (применяется по умолчанию). -c Сортировать по уменьшению количества вызовов. -a Сортировать по увеличению адресов. -n Сортировать по именам лексикографически. Взаимоисключающие опции -o и -x задают формат вывода адресов объектов: -o Выводить вместе с именем восьмеричный адрес объек- та. -x Выводить вместе с именем шестнадцатеричный адрес объекта. Следующие опции можно использовать в произвольной ком бинации: -g Включить в выдачу неглобальные объекты (статичес- кие функции). -z Включить в выдачу все объекты из диапазона профи- лирования [см. monitor(3C)], даже если соответст- вующие им количество вызовов и доля общего времени равны нулю. -h Подавить выдачу обычно печатаемого заголовка. (Данная опция полезна, если результаты предназна- чены для последующей обработки.) -s Выдать в стандартный протокол итоговую информацию о профилировании. -m файл_профиля Использовать в качестве исходного файл_профиля, а не mon.out. Программа создает файл с данными профилирования, если редактирование связей выполнялось командой cc(1) с оп- цией -p. При применении данной опции в начало и конец программы вставляются вызовы функции monitor(3C). Вто- рой из этих вызовов приводит к записи файла с результа- тами профилирования. Если нужно, чтобы для какой-то функции было выдано количество ее вызовов, файл с дан- ной функцией следует компилировать с опцией -p. Имя файла, создаваемого профилируемой программой, опре деляется по переменной окружения PROFDIR. В случае от- сутствия переменной PROFDIR, в каталоге, текущем на мо- мент окончания программы, создается файл mon.out. Если PROFDIR=цепочка, то создается файл цепочка/идентифика- тор_процесса.имя_программы, где имя_программы задается аргументом командной строки argv[0] с удаленным марш- рутным префиксом. Если значение PROFDIR является пустой цепочкой, то данные о профилировании в файл не записы- ваются. В целях профилирования функция может быть разбита на подфункции с помощью макроса MARK [см. prof(5)]. ФАЙЛЫ mon.out Подразумеваемый файл профиля. a.out Подразумеваемый файл с таблицей имен. СМ. ТАКЖЕ cc(1). exit(2), profil(2), monitor(3C), prof(5) в Справочнике программиста. ПРЕДОСТЕРЕЖЕНИЯ Временные данные, выдаваемые для последовательных иден тичных вызовов программы могут варьироваться в пределах 20 и более процентов из-за различий в скорости работы кэш-памяти, разделяемой с другими процессами. Даже е Вам кажется, что программа исполняется на компьютере в гордом одиночестве, то и тогда скрытые фоновые или асинхронные процессы могут исказить получаемые данные. В редких случаях сильное искажение измерений может про- изойти вследствие наложения циклов в программе и тактов часов, инициирующих запись программного счетчика. Если не используется опция -g, то время выполнения ста- тических функций приписывается к предыдущим внешним объектам. Однако количество вызовов внешних функций со- общается верно. ОГРАНИЧЕНИЯ Создание файла профиля гарантируется только для прог- рамм, вызывавших exit(2) или выполняющих возврат из функции main. В других случаях нужно позаботиться о яв- ном заключительном вызове функции monitor. При использовании для профилирования опции -p в команде cc(1) есть предел числа функций (600), для которых во время выполнения программы подсчитывается число вызо вов. Для увеличения этого предела следует вызывать функцию monitor самостоятельно. Если лимит будет превы- шен, то произойдет наложение данных и файл mon.out ока- жется испорченным. Число использованных счетчиков сооб- щается командой prof автоматически в том случае, ес оно превысило 5/6 максимума.