今天,我的同事斥责我使用pow(x, 2.0)。他(这个网站上的一个相当高的用户)坚持我写x * x,因为他声称它会更快更清晰。
但是为什么呢?pow难道不知道如何优化吗?我的方法肯定更清楚了?
发布于 2014-03-13 21:55:15
我可以建议你一件事吗?当你有好的编译器和适当的优化水平时,pow( x, 2.0 )可能和x * x一样快。不过,这不会更快。可能会慢一些。由于这个特殊的原因,我仍然会做x * x。
发布于 2014-03-13 22:36:26
如果明确是最大的标准(而且可能是应该的),我认为squared(x)甚至比pow(x, 2.0)或x*x更易读。这是一个简单的函数,您可以使用编译器和机器上最快的实现基准测试。
inline double squared(double x) { return x*x; } // or return pow(x, 2.0);发布于 2014-03-13 22:03:16
也许他们想说调用pow(x,2.0)意味着堆栈操作来保存参数和注册表,以及程序计数器的移动,所以如果您必须计算x^2,那么做x*x就更好、更简单。但是我认为这是一个非常极端的优化。
https://stackoverflow.com/questions/22391642
复制相似问题