小编典典

这是获取数字绝对值的最快方法

algorithm

哪种方法可以最快地实现返回数字的绝对值的运算?

x=root(x²)

要么

if !isPositive(x):
    x=x*(-1)

实际上,这个问题可以翻译为if:(有多快?为什么?)。

我的大学程序设计教授总是告诉我避免使用ifs,因为它们非常慢,但我总是忘了问它有多慢以及为什么。这里有人知道吗?


阅读 293

收藏
2020-07-28

共1个答案

小编典典

条件运算比普通的算术运算要慢,但比计算平方根的愚蠢运算要快得多。

我开会时的经验法则:

  • 整数或按位运算:1个周期
  • 浮点加/减/ mul:4个周期
  • 浮点div:〜30个周期
  • 浮点指数:〜200个周期
  • 浮点sqrt:大约60个周期,具体取决于实现
  • 条件分支:平均。10个周期,如果预测正确,则更好,如果预测错误,则更糟
2020-07-28