比较(a+B)*c和a*c+b*c的计算速度

t1rydlwq  于 2023-05-22  发布在  其他
关注(0)|答案(2)|浏览(167)

我刚刚学到在C语言中加法运算比乘法运算快。因此,我很好奇(a+b)*c的计算速度是否会比a*c+b*c快?

uyhoqukh

uyhoqukh1#

我刚刚了解到在C语言中加法运算比乘法运算快
那是胡说。C语言本身并没有影响这一点。哪一个更快完全取决于CPU提供的指令集(伊萨)。
因此,我很好奇(a+b)*c的计算速度是否会比a*c+b*c
无论您用C代码编写哪个版本,优化编译器都很可能生成相同的机器码。试试这个代码:

int add1 (int a, int b, int c)
{
  return (a+b)*c;
}

int add2 (int a, int b, int c)
{
  return a*c+b*c;
}

在x86_x64的gcc -O3 13.1上,我得到了两个版本100%等效的汇编代码:

add1:
    lea     eax, [rdi+rsi]
    imul    eax, edx
    ret
add2:
    lea     eax, [rsi+rdi]
    imul    eax, edx
    ret
enyaitl3

enyaitl32#

唯一确定的方法是直接测量。您可以查看机器代码,但这并不一定能告诉您如何处理;您的系统可以并行执行操作。
编写这两个版本,检测代码以收集统计数据(通过分析器或手动),然后运行数百万次计算。

相关问题