【发布时间】:2010-09-16 00:51:45
【问题描述】:
我正在编写一个 iPhone 应用程序,它需要每 1/30 秒计算大约 2000 次数字的平方根。 sqrt() 在计算机上运行良好,但在 iPhone 或 iPad 上帧速率下降到 10 FPS 左右,我已经优化了其余代码。我听说通过估计平方根可以大大加快速度,但我找不到任何代码来做到这一点。我只需要一到两位小数的精度。任何有关如何执行此操作或其他加快速度的方法的建议将不胜感激。
谢谢!
【问题讨论】:
-
维基百科有一个快速查找的算法描述得很好;你在找什么?
-
您确定需要计算平方根吗?通常在游戏等的毕达哥拉斯类型计算中,sqrt 可以被魔法消除。你是做什么用的?
-
或者,如果你不能把它变魔术,你可以使用查找表吗?
-
了解它的用途以及您将使用的值的范围非常有帮助。例如,如果它真的是 1/sqrt(x) 你想要有专门的方法。如果是 sqrt(1-x*x),我发现 maclaurin 系列对于 |x| 来说非常快速和简单小于 0.8。最好的方法取决于你的使用。
-
感谢所有出色的答案!下面的答案是我为什么喜欢 StackOverflow 的一个很好的例子——每个人都非常乐于助人,并且知识渊博,他们可以用易于理解的方式进行解释。谢谢大家!
标签: objective-c iphone sqrt square-root