【发布时间】:2023-02-04 02:37:03
【问题描述】:
考虑以下应用程序。
#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%。
【问题讨论】: