【发布时间】:2016-01-26 14:18:57
【问题描述】:
有什么方法可以在不损失精度的情况下提高 的计算性能?目前我只是在做:
1 / (1 + a * b)
a 和 b 是双倍的。 a 的值是常数。我需要做数百万次这样的计算。
【问题讨论】:
-
您需要多少精度?
-
预计算
ra=1/a以便您可以使用ra/(ra+b)应该是在不损失精度的情况下略微提高速度。但我仍然希望更广泛地了解您实际尝试优化的内容。 -
您有个人资料吗?这条线是瓶颈吗?通常循环是瓶颈的原因,而不是单个语句。虽然众所周知,除法会占用执行时间。
-
你考虑过定点算法吗?定点比浮点更准确。
-
如果你每次使用计算倒数一次,为什么你有多余的乘法?为什么不
f/(1+a*b)?另外,再一次,您为什么要谈论优化“数百万”次完成的事情?数百万是微不足道的。
标签: c++ performance math inverse