Книга: Основы программирования в Linux

Выполнение профилирования с помощью prof/gprof

Выполнение профилирования с помощью prof/gprof

Методика, зачастую полезная при попытках выяснить проблемы снижения производительности программы, называется профилированием выполнения (execution profiling). Профиль программы, обычно поддерживаемый специальными опциями компилятора и вспомогательными программами, показывает, где программа тратит время.

Программа prof (и ее эквивалент в проекте GNU, gprof) выводит отчёт из файла трассировки выполнения, который формируется во время выполнения профилируемой программы. Профилируемый исполняемый файл создается с помощью флага компилятора -p (для prof) или флага -pg (для gprof).

$ cc -pg -о program program.с

Программа компонуется со специальной библиотекой С, и в нее включается контрольный код. В конкретных системах он может отличаться, но общая цель — такая организация программы, которая позволяет часто прерывать выполнение и записывать этап выполнения. Контрольные данные записываются в файл mon.out (gmon.out для gprof) в текущем каталоге.

$ ./program
$ ls -ls
2 -rw-r--r-- 1 neil users 1294 Feb 4 11:48 gmon.out

Программа prof/gprof читает эти контрольные данные и выводит отчет. См. подробности, касающиеся опций программы, в интерактивном справочном руководстве. Далее в качестве примера приведен вывод (сокращенный) программы gprof.

cumulative  self    self   total
   time    seconds seconds  calls ms/call ms/call            name
   18.5       0.10    0.10   8664    0.01    0.03      doscan [4]
   18.5       0.20    0.10                            mcount (60)
   14.8       0.28    0.08  43320    0.00    0.00     _number [5]
    9.3       0.33    0.05   8664    0.01    0.01 _format_arg [6]
    7.4       0.37    0.04 112632    0.00    0.00     _ungetc [8]
    7.4       0.41    0.04   8757    0.00    0.00    _memccpy [9]
    7.4       0.45    0.04      1   40.00  390.02       _main [2]
    3.7       0.47    0.02     53    0.38    0.38      _read [12]
    3.7       0.49    0.02                             w4str [10]
    1.9       0.50    0.01  26034    0.00    0.00    _strlen [16]
    1.9       0.51    0.01   8664    0.00    0.00    strncmp [17]

Оглавление книги


Генерация: 1.761. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз