3 回答

TA貢獻(xiàn)1794條經(jīng)驗 獲得超8個贊
我建議math.Pow(x,y)
在 Go 中實際上沒有x^y
對y
while 的整數(shù)值進(jìn)行任何優(yōu)化,而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貢獻(xiàn)1846條經(jīng)驗 獲得超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
$
你得到什么結(jié)果?
添加回答
舉報