我在编译期间使用-O0 -g -pg。通话次数令人困惑。我有一个函数foo()调用bar()。但foo()的调用计数远小于bar(),显示从foo()调用bar()多少次的数量远小于调用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]
这意味着对Ns_UrlSpecificGet的214488次调用来自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,但并未解释这种情况。文章中的例子是完美的,但在报告的其他部分,我看到了许多不匹配的例子,如上所述。