调整CallGrind中的分辨率

Tuning the resolution in callgrind

本文关键字:分辨率 CallGrind 调整      更新时间:2023-10-16

对不起,我无法创建一个最小的完整示例,因为问题仅针对相对较大的程序发生,而且我不确定这是一个'bug'本身,而不是误解应该完成的呼叫格林格分析。

我有一个很大的程序,其运行时间约50 50分为两个顺序零件。第一部分是大多数文件读数,第二部分主要是计算。

我期望的功能调用顺序如下:

呼叫范围,callee

主要部分1_main

part1_main part1_main_subfunction_1

part1_main part1_main_subfunction_2

part1_main part1_main_subfunction_3

主part2_main

part2_main part2_main_subfunction_1

part2_main part2_main_subfunction_2

..

..

当我在代码上运行callGrind(然后在OSX上查看kcachegrind中的结果),我对函数调用有一些结果,这些调用大约是您所期望的,除了一件事:内部没有函数调用的分辨率第二部分:配置文件输出在质量上与

相同

功能,pct_time,self_time

part1_main 50 4

part2_main 50 50

part1_main_subfunction_1 20 4

part1_main_subfunction_2 15 5

..

..

..

第二个功能具有很高的自我时间的解释是什么?看来,牧师认为它没有调用任何其他功能。我想虽然不太可能是函数2中的所有内容都可能是内衬的,因此也许不应该有任何进一步的分辨率。如果这是真的,这不会产生非常有趣的分析结果。

如果您遇到这种类型的事情, 如何迫使探索者显示进一步的解决方案?或者,如果我的直觉是错误的,那么还有什么可能导致这种行为?

根据CallGrind网站的说明,我正在使用-G标志编译,并打开了优化。

作为默认的kcachegrind hide函数的重量很小,但是您可以自定义。在这里查看答案:在Kcachegrind CallGraph

中让CallGrind显示所有功能调用