在c++中做乘法比求2的幂更有效吗?
我正在尝试做最后的详细优化。编译器是否会将x*x等同于pow(x,2)?如果我没记错的话,出于某种原因,乘法更好,但也许在c++11中这并不重要。
谢谢
发布于 2013-05-24 04:44:01
如果您将乘法与pow()标准库函数进行比较,那么是的,乘法绝对更快。
发布于 2013-05-24 04:54:33
一般来说,你不应该担心像那样的微微优化,除非你有证据证明有一个热点(也就是,除非你已经在现实场景下分析了你的代码,并且已经识别了特定的代码块。还请记住,您的巧妙技巧实际上可能会导致新处理器中的性能回归,而您的假设将不再成立。
算法的改变是让你的计算得到最大回报的地方。专注于这一点。
修修补补乘法和做聪明的比特黑客...嗯,不是很棒*因为当前一代的优化编译器在他们的工作中确实是相当优秀的。这并不是说他们不能被击败。他们可以,但不容易,而且可能只有像Agner Fog这样的少数人。
*当然,也有例外。
发布于 2013-05-24 04:43:54
当涉及到性能时,请始终进行测量以支持您的假设。永远不要相信理论,除非你有一个基准来证明这个理论是正确的。
此外,请记住,在C++中,x ^ 2不会产生2的平方:
#include <iostream>
int main()
{
int x = 4;
std::cout << (x ^ 2); // Prints 6
}。
https://stackoverflow.com/questions/16723523
复制相似问题