这一段怎么看都时死循环的代码,居然不占CPU,说明go内部给锁住了。
但是把 ks := make([]int, 100000) 改成 ks := make([]int, 1000) 就可以跑满CPU了。 我用的是 1.6版, 1.5版的这种问题更严重。
有疑问加站长微信联系(非本文作者)

这一段怎么看都时死循环的代码,居然不占CPU,说明go内部给锁住了。
但是把 ks := make([]int, 100000) 改成 ks := make([]int, 1000) 就可以跑满CPU了。 我用的是 1.6版, 1.5版的这种问题更严重。
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
我用go1.6.2 windows/amd64测试了一下,发现两者都占cpu,ks := make([]int, 100000)约占60%,改成 ks := make([]int, 1000)后约占90%,后者明显要高一些。
go 语言在 make 时有bug 如果分配的内存大了多了,会锁死。 所以要求效率时,make 分配的内存不要去释放。
在4核的机器上不明显,我16核的机器这差距明显。。