调整CallGrind中的分辨率
Tuning the resolution in callgrind
对不起,我无法创建一个最小的完整示例,因为问题仅针对相对较大的程序发生,而且我不确定这是一个'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追踪不必要的副本
- 在多次运行中获得一致的callgrind输出
- 使用分辨率定理用Z3证明
- Alt+Enter 在 Win32 应用中,管理大小调整和分辨率
- Opencv 恢复到比我设置的更高的分辨率
- 在Windows(C++)中使用USB相机拍摄高分辨率照片
- C/C++ 位数组分辨率转换算法
- Windows 和 Linux 之间的相对路径分辨率差异?
- 如何在C++中为高分辨率时钟声明变量?
- 给定数字的浮点分辨率
- 过载分辨率和用户定义的转换
- QScreen geometry()api为分辨率2736 x 1824和2560 x 1600提供了错误的值
- 在没有NtSetTimerResolution的Windows上提高计时器分辨率(高分辨率)
- 获取可能的屏幕分辨率列表
- std::array<const T, n> vs std::array<T, n> 过载分辨率
- 模板转换运算符的分辨率不明确
- 将 X 坐标从一种分辨率转换为另一种分辨率
- 使用 gcc 的模糊函数过载分辨率.为什么?
- caffe 可以一次接收一批具有不同分辨率的输入吗?如果是这样,怎么办?
- 调整CallGrind中的分辨率