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