Я использую -O0 -g -pg во время компиляции. Количество звонков сбивает с толку. У меня есть функция foo (), которая вызывает bar (). Но количество вызовов для foo () намного меньше, чем bar (), число, показывающее, сколько раз вызывается bar () из foo (), намного меньше, чем общее количество вызовов foo (). И foo (), и bar () являются крошечной функцией. Но согласно здесь: http://www.cs.utah.edu/dept/old/texinfo/as/gprof.html#SEC12, цифры количества звонков должны быть точными.
Я гуглю и узнаю, что в отчете онлайн есть похожая проблема, и я демонстрирую это здесь.
http://badgertronics.com/writings/gprofsample.html
Если мы посмотрим на [3], DefaultUrlToFile, общее количество вызовов составляет 107244, но ниже этого вы можете увидеть
214488/268156 Ns_UrlSpecificGet [12]
Это означает, что 214488 раз обращений к Ns_UrlSpecificGet происходит из DefaultUrlToFile. Как это возможно, если общее количество вызовов составляет 107244?
В разделе [12] он имеет
0.19 2.06 214488/268156 DefaultUrlToFile [3]
[12] 13.4 0.23 2.58 268156 Ns_UrlSpecificGet [12]
Как мы можем это объяснить? Статья, связанная с отчетом выше, здесь http://badgertronics.com/writings/gprof.html но это не объясняет эту ситуацию. Пример в статье идеален, но в других частях отчета я вижу много примеров несоответствий, как указано выше.
Задача ещё не решена.
Других решений пока нет …