2016-05-15 109 views
0

我正在使用perf来剖析我的程序,其中涉及到使用exp()和pow()的负载。该代码被编译使用perf报告显示“__libm_pow_l9”

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

与异形:

perf record -g ./a.out 

随后是:

perf report -g 'graph,0.5,caller' 

和PERF了:

enter image description here

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

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

回答

1

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

没有什么可担心的。 Exp和Pow是比通常更简单的函数,因此需要一些时间。不幸的是,我没有找到任何对它们的引用(英特尔数学库可能不是开源的),但这是使用内部名称空间名称进行功能的常见做法。