roy*_*per 0 c time-estimation computation-theory
我刚刚了解到,C 中的加法运算比乘法运算更快。因此,我很好奇(a+b)*c计算速度是否会比 C 更快a*c+b*c?
我刚刚了解到 C 中的加法运算比乘法运算更快
那是无稽之谈。C 语言本身没有任何东西会影响这一点。哪个更快完全取决于CPU提供的指令集(ISA)。
因此,我很好奇
(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;
}
Run Code Online (Sandbox Code Playgroud)
在gcc -O3x86_x64 的 13.1 上,我获得了两个版本 100% 等效的汇编代码:
add1:
lea eax, [rdi+rsi]
imul eax, edx
ret
add2:
lea eax, [rsi+rdi]
imul eax, edx
ret
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |