去不充分使用cpu



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

出乎我的意料,我的go代码仍然比同等的java代码慢3倍。这在预料之中吗?此外,在检查htop中的cpu使用率时,我发现每个核心的使用率仅为85%左右。这是htop的问题还是我的代码有问题?这是我的应用程序的cpu配置文件

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

我猜是垃圾收集器的问题。也许你做了很多不必要的分配。通过使用运行时。ReadMemStats可以显示垃圾收集器已经运行了多少时间。

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

相关内容

  • 没有找到相关文章

最新更新