不要完全使用cpu

时间:2014-06-24 15:21:43

标签: performance go htop

到目前为止,我一直在玩一个简单的光线跟踪器。我使用多个goroutine渲染图像的不同部分,然后将结果放入共享电影中。

与我的期望相反,我的go代码仍然比同等的java代码慢大约3倍。这是预料之中的吗?此外,在htop中检查CPU使用情况时,我发现每个核心仅用于大约85%。这是htop的问题还是我的代码有问题?这是我的应用程序的cpu profile

我确实将GOMAXPROCS设置为runtime.GOMAXPROCS(runtime.NumCPU())full code is on github

1 个答案:

答案 0 :(得分:0)

我猜想垃圾收集器就是问题所在。也许你正在做很多不必要的分配。通过使用runtime.ReadMemStats,您可以了解垃圾收集器运行的时间。

如果是这种情况,那么您必须找到减少内存分配的方法。例如,通过使用对象池。看看sync.Pool。此外,您可以通过Google找到几个有用的链接,解释如何减少内存分配。例如,请查看this one