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

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' (*см. Простой профиль::) никогда не упоминается в графе вызовов.


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