考虑以下应用。
#include <cmath>
void foo()
{
double x = 42.0;
for ( unsigned long i = 0; i < 10000000; ++i )
x = std::sin( x );
}
int main()
{
foo();
return 0;
}
我使用以下命令。
g++ main.cpp
perf record ./a.out
perf report
我明白了。
Samples: 518 of event 'cycles', Event count (approx.): 410229343
Overhead Command Shared Object Symbol
84,28% a.out libm.so.6 [.] __subtf3
12,59% a.out a.out [.] foo
2,47% a.out a.out [.] _init
0,47% a.out [kernel.kallsyms] [k] may_open
0,17% a.out [kernel.kallsyms] [k] memcg_slab_post_alloc_hook
0,01% perf-ex [kernel.kallsyms] [k] mutex_unlock
0,01% a.out [kernel.kallsyms] [k] __intel_pmu_enable_all.constprop.0
0,00% perf-ex [kernel.kallsyms] [k] native_write_msr
0,00% a.out [kernel.kallsyms] [k] native_write_msr
如何理解foo
的12.59%?
如何告诉perf report
显示函数所花费时间的完整百分比?我希望看到类似于-foo
99%,__subtf3
90%的内容。
1条答案
按热度按时间mrphzbgm1#
这只是回答了一半,我会回答我自己的第二个问题。
使用以下命令可以根据需要查看百分比。
结果会是这样。