3 回答

TA貢獻1812條經(jīng)驗 獲得超5個贊
計時并嘗試并行化
package add
import (
"testing"
)
func BenchmarkSimple(b *testing.B) {
// to run use go test -bench=.
var array=make([]byte,1000000)
for i := 0; i < b.N; i++ {
addit(&array,1)
}
}
func BenchmarkPara(b *testing.B) {
// to run use go test -bench=.
var array=make([]byte,1000000)
var p1=array[0:250000]
var p2=array[250001:500000]
var p3=array[500001:750000]
var p4=array[750001:999999]
for i := 0; i < b.N; i++ {
go addit(&p1,1)
go addit(&p2,1)
go addit(&p3,1)
go addit(&p4,1)
}
}
func addit(myByte *[]byte, v byte) {
for i:=0; i<len(*myByte); i++ {
(*myByte)[i]+=v
}
}
這是我在筆記本電腦上看到的。我的筆記本電腦有4核
$ go test -bench=.
goos: darwin
goarch: amd64
BenchmarkSimple-4 1130 1035976 ns/op
BenchmarkPara-4 10000 559050 ns/op
PASS
ok _/Users/jamandre/wip/add 6.923s
對于這樣的事情,時間安排并不像看起來那么聰明,請參閱https://www.youtube.com/watch?v=r-TLSBdHe1A&t=46s但請務必把握好時間!
四個 goroutine 并沒有給 4x 加速,大約 2 x 是相當不錯的

TA貢獻1810條經(jīng)驗 獲得超4個贊
- 3 回答
- 0 關(guān)注
- 137 瀏覽
添加回答
舉報