分裂比C ++中的乘法更昂贵吗?

时间:2012-07-14 05:44:50

标签: c++ optimization

  

可能重复:
  Should I use multiplication or division?
  Compare multiplication and division

分区比C ++中的乘法更昂贵吗?

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

2 个答案:

答案 0 :(得分:8)

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

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

简而言之,现在参与这些类型的微观优化并不值得。很可能编译器优化器会识别将乘法替换为除法的情况。

答案 1 :(得分:0)

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

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

FMUL& amp;的定时FDIV似乎相当确凿,至少对于所列出的处理器而言。然而,其他处理器可能不同。换句话说,学会分析。