3 回答
TA贡献1812条经验 获得超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条经验 获得超4个赞
- 3 回答
- 0 关注
- 105 浏览
添加回答
举报