乘法优化

Ser*_*lov 2 optimization

我听说,有一种方法可以优化a * 10操作(在任何语言中), a * 2 * 2 * 2 + a * 2并获得很大的好处,因为*2转换为简单的二进制移位操作,并且比乘法操作工作得快得多.
这样对吗?

Gre*_*ill 5

是的,这是真的.但是,如果将变量乘以适当的常量(如果它适合目标CPU架构),那么一个好的编译器可能会自动为您执行此操作.

我刚刚在英特尔目标上尝试使用GCC,并且-O没有使用shift-and-add方法.我猜这个imul指令更快.但是,我当然看到GCC使用ARM目标生成的这种类型的代码,其中乘法指令相对较慢.