【发布时间】:2013-07-26 20:02:12
【问题描述】:
在 C/C++ 中,您可以设置以下代码:
double a, b, c;
...
c = (a + b) / 2;
这与以下内容完全相同:
c = (a + b) * 0.5;
我想知道哪个更好用。从根本上说,一种操作是否比另一种更快?
【问题讨论】:
-
一般来说他们不会做同样的事情。
-
@GrijeshChauhan 快告诉你? 那个是关于什么的?
-
@JanSpurny:这不是高度依赖 CPU 或架构。它部分依赖于 CPU 或体系结构。在许多处理器上,乘法比除法快得多,如果没有其他原因,程序员应该更喜欢乘法而不是除法。
-
反对票和关闭票是不合适的。这是一个很好的问题,会对性能产生重大影响。高性能代码通常更喜欢乘法而不是除法,因为在大多数现代处理器上乘法速度更快。
-
这是一个重要问题(所以投赞成票)的另一个原因是 优化器无法进行这种转换,除非因子是 2 的幂(或者,如果使用的是非二进制浮点,则为浮点系统中的倒数)。当因子在浮点系统中没有精确的逆时,不允许优化器将除法更改为乘法。因此,程序员应该意识到乘法比除法更快,并且如果他们知道逆中的舍入误差是可以接受的,他们应该支持乘法。
标签: c++ c performance optimization