我目前正在用 C 语言编写一个程序,该程序需要尽可能快地运行,并且目前正在考虑提高某些计算执行的速度。我知道最慢的运算是乘法和除法,并且我已用左/右移位将乘法/除法替换为 2 的幂。
我想知道我是否可以对乘以 6 做类似的事情,因为似乎这个操作在我的程序中经常出现。通常它会乘以 1 或 0 的数字,我觉得应该有一个好的方法来加速这个过程,但想不出任何方法。
相信你的编译器。不要过多考虑微观优化。它们通常会产生不利影响。所有版本都编译为相同的代码:
int imul6(int x)
{
int y = x + x;
return y+y+y;
}
int imoul6_1(int n)
{
return ((n << 1) + n) << 1;
}
int imul6_2(int x)
{
return x+x+x+x+x+x;
}
int imul6_3(int x)
{
return x*6;
}
Run Code Online (Sandbox Code Playgroud)
https://godbolt.org/z/vMos69PaM