进行乘法比在c ++中提高功率2更有效吗?
我正在尝试做最后的详细优化.编译器会将x*x与pow(x,2)相同吗?如果我没记错的话,乘法因某种原因更好,但也许在c ++ 11中并不重要.
谢谢
我一般情况下,你不应该担心像这样的微微优化,除非你有证据证明存在热点(即除非你在现实场景下描述了你的代码并且已经确定了特定的代码块.另外请记住你的聪明技巧实际上可能导致你的假设不再适用的新处理器的性能回归.
算法变化是您获得计算优势的最佳选择.专注于此.
摆弄乘法并做一些聪明的比特hackery ......呃那里没有那么多*因为当前一代的优化编译器在他们的工作中非常出色.这并不是说他们无法被击败.他们可以,但不是很容易,可能只有少数人喜欢Agner Fog.
*当然也有例外.
在性能方面,总是进行测量以备份您的假设.除非你有一个证明理论正确的基准,否则永远不要相信理论.
另外,请记住,在C++ x ^ 2
中不会产生2的平方:
#include <iostream>
int main()
{
int x = 4;
std::cout << (x ^ 2); // Prints 6
}
Run Code Online (Sandbox Code Playgroud)
实例.