1

可能重复:
我应该使用乘法还是除法?
比较乘法和除法

在 C++ 中,除法比乘法更昂贵吗?

我正在进行优化,出于某些比较原因,我可以将 B/alpha_B 转换为 B*alpha_A。我现在可以选择应该使用乘法还是除法?

4

2 回答 2

10

这与 C++(或任何其他语言)无关,与底层处理器架构/实现有关。在大多数处理器系列上,除法通常比乘法慢 10 倍。

也就是说,除法指令的延迟现在很少是程序中的主要性能热点(当然,您的里程可能会有所不同)。用倒数乘法代替除法最有意义的地方是当您将向量除以常数因子(例如向量归一化、缩放、矩阵旋转)时。这也是流水线深度最能掩盖div指令延迟和内存带宽(假设大向量)可能成为吞吐量限制的地方。

简而言之,现在很少值得进行这些类型的微优化。编译器优化器很可能会识别出无论如何用乘法代替除法是有意义的情况。

于 2012-07-14T06:07:44.493 回答
0

我发现一个声称乘法更快的消息来源:

http://simpletonprogrammer.blogspot.com/2012/01/assumed-optimization-floating-point.html

FMUL 和 FDIV 的时间安排似乎是相当确定的,至少对于列出的处理器而言。但是,其他处理器可能不同。换句话说,学会剖析。

于 2012-07-14T06:00:15.117 回答