mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк 

Златоуст.Ru

 

 

      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 максимума.



PROF(5)                                                 PROF(5)

НАЗВАНИЕ 
        prof - подготовка временного профиля одной функции

СИНТАКСИС 
        #define MARK
        #include 
        
        void MARK (name)

ОПИСАНИЕ 
        Вызов макроса MARK введет метку с именем name,  которая
        с точки зрения подготовки временного профиля трактуется
        аналогично  точке входа функции. Выполнение команд мак-
        роса приведет к увеличению счетчика для данной метки, а
        затраченное время приплюсуется к предыдущей метке, вве-
        денной посредством макроса MARK, или,  если  таковой  в
        пределах функции нет, то к точке входа функции.

        Имя name может быть произвольной комбинацией букв, цифр
        и символов подчеркивания. В пределах одного  файла  все
        профилируемые имена должны быть уникальными, однако они
        могут совпадать с другими программными объектами.

        Чтобы данная возможность тонкого профилирования работа-
        ла,  имя  MARK  должно  быть  определено до того, как в
        текст будет включен файл . Имя MARK может  быть
        определено  с  помощью директивы препроцессора, как это
        сделано выше, или с помощью аргумента командной строки,
        например:

             cc  -p -DMARK f1.c

        Если имя MARK не определено, то предложения с  макросом
        MARK (name) могут быть оставлены в исходных файлах, так
        как они будут проигнорированы.

        Просмотреть подготовленный профиль можно с помощью  оп-
        ции -g программы prof(1).

ПРИМЕР 
        В данном примере макросы можно использовать для опреде-
        ления времени, затраченного на выполнение каждого  цик-
        ла. Если этот пример не откомпилирован с определенным в
        командной строке именем MARK, то макросы игнорируются.

        #include 
        f1 ()
        {
          int i,j;
            ...
          MARK(loop1);
          for (i = 0; i < 2000; i++) {
             ...
          }
          MARK(loop2);
          for (j = 0; j < 2000; j++) {
            ...
          }
        }

СМ. ТАКЖЕ 
        profil(2), monitor(3C).
        prof(1) в Справочнике пользователя.

ОГРАНИЧЕНИЯ 
        При  вызове  макроса MARK не должно быть пробелов между
        скобками и именем name, так как макрос определен в виде
        ассемблерных вставок и пробелы приведут к ошибке в мет-
        ке.




 

 

Бернадинер Марк Абрамович

Мое резюме

Компьютерная страничка

Ресурсы сети

Фотоальбом

 

 

 

mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк