我正在使用perf来了解我的程序的每个函数对总执行时间的开销.为此,我使用cpu-cycles事件:
perf record -e cpu-cycles -c 10000 <binary-with-arguments>
Run Code Online (Sandbox Code Playgroud)
当我查看输出时,我看到与每个函数相关的一些百分比.但是对我来说没有意义的是这样的情况:函数A在函数B中被调用而在其他地方没有.但是我获得的函数A的开销百分比高于B.如果B调用A,则意味着B应该包含A的开销.或者我在这里遗漏了什么?
您正在使用的perf命令仅对您的程序进行采样,而不记录调用堆栈的任何信息.使用perf report您可以获得与您的调用关系无关的样本数量.
使用时可以使用该--call-graph选项获取树perf report:
perf record -e cpu-cycles --call-graph dwarf -c 10000 <binary-with-arguments>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1060 次 |
| 最近记录: |