首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pow的效率(num,2)?

pow的效率(num,2)?
EN

Stack Overflow用户
提问于 2013-03-11 22:58:35
回答 2查看 185关注 0票数 1

我需要多次计算浮标的平方。( 10^8)

哪个更好(因为时间是一个巨大的限制):

代码语言:javascript
复制
 pdt=pow(num,2);

      OR

 pdt=num*num

还是他们真的一样?

编辑:在相当大的输入上检查这两种样式时,我的处理器给出了矛盾的结果.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-11 23:02:40

在任何非反常的C/C++实现上,num*num将至少与pow(num, 2)一样快,因为没有至少一个浮点乘法或更耗时的操作,pow的实现就没有了。

票数 10
EN

Stack Overflow用户

发布于 2013-03-11 23:05:26

使用gcc而不带任何选项的num * num更快,因为pow会引发函数调用。在-O2,它们输出相同的asm (用于x86):

代码语言:javascript
复制
float numpow(float x){
    return pow(x, 2);
}

float mulpow(float x){
    return x*x;
}

compiled with g++ -S -O2 -c 

__Z6numpowf:
Leh_func_begin1:
    pushq   %rbp
Ltmp0:
    movq    %rsp, %rbp
Ltmp1:
    mulss   %xmm0, %xmm0
    popq    %rbp
    ret
Leh_func_end1:

...
__Z6mulpowf:
Leh_func_begin2:
    pushq   %rbp
Ltmp2:
    movq    %rsp, %rbp
Ltmp3:
    mulss   %xmm0, %xmm0
    popq    %rbp
    ret
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15350262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档