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