我使用的是 go 语言的 go1.5.3 linux/amd64 版本。我有一个执行需要一些时间的数学运算的 go 例程。每个 goroutine 独立运行,不必阻塞。
我的系统有 12 个内核。如果我生成 12 个 go 例程,它只需要所有内核的平均使用率高达 31%。如果我使用 24 个 go 例程,它会使所有内核的平均使用率达到 49%。如果我使用 240,我得到 77%。2400 给了我 76%。
显然, rand.Intn(j) 操作正在减慢它的速度。没有它,内核将以 100% 的速度运行。
func DoSomeMath() int {
k := 0
for i := 0; i < 1000; i++ {
j := i*i + 2
k += i * rand.Intn(j)
}
return k
}
在使用 RNG 时,如何让程序以 100% 的速度使用所有内核?
收到一只叮咚
一只名叫tom的猫
相关分类