0

我一直在玩一个简单的光线追踪器,到目前为止它工作得非常整齐。我正在使用多个 goroutine 来渲染图像的不同部分,然后将它们的结果放入共享影片中。

出乎我的意料,我的 go 代码仍然比等效的 java 代码慢 3 倍。这是意料之中的吗?此外,当检查 中的 CPU-Usage 时htop,我发现每个内核只使用了大约 85%。这是htop我的代码有问题还是有问题?这是我的应用程序的cpu 配置文件

我确实将 GOMAXPROCS 设置为runtime.GOMAXPROCS(runtime.NumCPU()). 完整代码在github 上

4

1 回答 1

0

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

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

于 2014-06-24T20:37:28.317 回答