今天,我的同事指责我使用pow(x, 2.0)
。他(这个网站上一个相当高代表的用户)坚持我写x * x
,因为他声称它会更快更清楚
但为什么呢?不管pow
知道要优化吗?当然我的方法更清楚了吗?
答案 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会更好更简单。但我认为这是一个非常极端的优化。