何时不使用pow()

时间:2014-03-13 21:46:00

标签: c++

今天,我的同事指责我使用pow(x, 2.0)。他(这个网站上一个相当高代表的用户)坚持我写x * x,因为他声称它会更快更清楚

但为什么呢?不管pow知道要优化吗?当然我的方法更清楚了吗?

3 个答案:

答案 0 :(得分:3)

我可以建议一件事吗?当您拥有良好的编译器和适当的优化级别时,pow( x, 2.0 )可能与x * x一样快。但是, NOT 会更快。它可能会慢一些。由于这个特殊原因,我仍然会x * x

答案 1 :(得分:1)

如果明确是最高标准(可能应该是),我认为squared(x)pow(x, 2.0)x*x更具可读性。这是一个很容易编写的函数,您可以在编译器和机器上使用最快的实现基准测试。

inline double squared(double x) { return x*x; } // or return pow(x, 2.0);

答案 2 :(得分:0)

可能他们想说调用pow(x,2.0)意味着堆栈操作来保存参数和注册表,以及编程计数器移动,因此如果你必须计算x ^ 2,那么做x * x会更好更简单。但我认为这是一个非常极端的优化。