perf报告显示“__libm_pow_l9”

我正在使用perf来配置我的程序,其中涉及使用exp()和pow()的负载。 代码是编译使用的

icc -g -fno-omit-frame-pointer test.c 

并描述:

 perf record -g ./a.out 

接下来是:

 perf report -g 'graph,0.5,caller' 

和perf给出:

在此处输入图像描述

这两个函数__libm_exp_l9()和__libm_pow_l9()正在消耗大量的计算能力。

所以我想知道它们是否只是exp()和pow()的别名? 或者在这里阅读报告的任何建议? 谢谢。

它们不是别名,而是函数的内部实现。 数学库通常具有多个版本的函数,具体取决于使用的处理器,指令集或参数。

没有什么可担心的。 Exp和Pow的function比指令(通常)更复杂,因此需要一些时间。 不幸的是我没有找到任何参考(英特尔数学库可能不是开源),但这是通常的做法,使用内部命名空间名称的function。