0

これまでのところ、かなりうまく機能しているシンプルなレイトレーサーで遊んでいます。複数のゴルーチンを使用して画像のさまざまな部分をレンダリングし、その結果を共有フィルムに配置しています。

私の予想に反して、私の go コードは同等の Java コードよりも約 3 倍遅いです。それは予想されたことでしたか?さらに、 で CPU 使用率を調べると、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 に答える