Профилятор gprof: Как прочитать граф вызовов

Вперед Назад Содержание

6. Как прочитать граф вызовов

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

Здесь показан пример графа вызовов небольшой программы. Этот пример получен при том же запуске `gprof', что и вышеприведенный пример простого профиля.

      granularity: each sample hit covers 2 byte(s) for 20.00% of 0.05 seconds
 
      index % time    self  children    called     name
                                                       <spontaneous>
      [1]    100.0    0.00    0.05                 start [1]
                      0.00    0.05       1/1           main [2]
                      0.00    0.00       1/2           on_exit [28]
                      0.00    0.00       1/1           exit [59]
      -----------------------------------------------
                      0.00    0.05       1/1           start [1]
      [2]    100.0    0.00    0.05       1         main [2]
                      0.00    0.05       1/1           report [3]
      -----------------------------------------------
                      0.00    0.05       1/1           main [2]
      [3]    100.0    0.00    0.05       1         report [3]
                      0.00    0.03       8/8           timelocal [6]
                      0.00    0.01       1/1           print [9]
                      0.00    0.01       9/9           fgets [12]
                      0.00    0.00      12/34          strncmp <cycle 1> [40]
                      0.00    0.00       8/8           lookup [20]
                      0.00    0.00       1/1           fopen [21]
                      0.00    0.00       8/8           chewtime [24]
                      0.00    0.00       8/16          skipspace [44]
      -----------------------------------------------
      [4]     59.8    0.01        0.02       8+472     <cycle 2 as a whole>      [4]
                      0.01        0.02     244+260         offtime <cycle 2> [7]
                      0.00        0.00     236+1           tzset <cycle 2> [26]
      -----------------------------------------------
Пунктирные линии делят эту таблицу на "записи" ("entries"), по одной на каждую функцию. Каждая запись содержит одну или более строк.

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

Записи упорядочены по времени, затраченному на выполнение функций и их подпрограмм.

Внутренняя профилирующая функция `mcount' (*см. Простой профиль::) никогда не упоминается в графе вызовов.


Вперед Назад Содержание