Closed. This question needs details or clarity。它当前不接受答案。












想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。

3个月前关闭。



Improve this question




我有一些要除以根2的整数:
var x int32
var sqrt_two = math.Sqrt(2)
for {
    result = float64(x) / sqrt_two
}
但是,result可以作为一种近似解决方案,因此我们可以删除math.Sqrt的使用。
99/70大约等于根2,因此我们可以这样写:
var x int32
for {
    result = float64(x * 70) / 99
    // fewer float64 operations than float(x) * 70 / 99
}
这有效/值得吗?

最佳答案

在第一个区块中,您仅使用一次math.Sqrt(2)。因此,在for循环内的所有迭代中,将分摊“可观”的成本。循环时间越长,这种成本就越不相关。
在第二个块中,您无需预先计算70/99,因此不进行摊销,并且原则上,您将要进行更多的操作,因为除法运算比第一个块中的乘法运算要昂贵得多。
如果没有更多的背景,很难说是否值得。最好的选择是对这两种情况进行基准测试,看看是否适合您的用例,即您的典型迭代长度,哪个更好。
Scriptum之后:我假设您可以在计算中使用较粗略的近似。

关于go - 通过近似加快平方根除法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62772481/

10-11 18:06