3 回答
TA贡献1794条经验 获得超8个赞
我建议math.Pow(x,y)
在 Go 中实际上没有x^y
对y
while 的整数值进行任何优化,而Math.pow(x,y)
只是x*x
for y==2
。至少在两个程序pow
中用 simple替换时x*x
,Java 为 6.5 秒,而 Go 为 1.4 秒。使用pow
代替我仍然得到6.5秒为Java而29.4秒了围棋。
TA贡献1846条经验 获得超7个赞
不要从其他语言翻译。用 Go 编写程序的 Go 版本。例如x*x - x,
package main
import (
"fmt"
"math"
"time"
)
func main() {
start := time.Now()
v := testFun(10, 16666611, 1000000000)
since := time.Since(start)
fmt.Printf("value is %v\ntime is %v\n", v, since)
}
func fun(x float64) float64 {
return x*x - x
}
func testFun(first float64, second float64, times int) float64 {
sum := float64(0)
dx := (second - first) / float64(times)
for i := 0; i < times; i++ {
sum += fun(first + float64(i)*dx)
}
return sum * dx
}
输出:
$ go version
go version devel +5c11480631 Fri Aug 10 20:02:31 2018 +0000 linux/amd64
$ go run speed.go
value is 1.543194272428967e+21
time is 1.011965238s
$
你得到什么结果?
添加回答
举报