goroutineを使用していくつかの奇妙な動作が発生しています。間違ったことについて助言やコメントを提供してください。goroutineのパフォーマンスに影響を与える要因
私はgoroutinesを使って同時にシミュレーションを行っていますが、何らかの理由で私が入れたgoroutinesの数が増えて妥当な時間内にシミュレーションを終了できなくなってしまいました。開始すべての10Kゴルーチンに対して
、私はCPUやメモリ不足が表示されていない5秒
によって計算時間が増加:ここで私は気づく事があります。しかし、CPU使用率は、10kのゴルーチンごとにわずかに増加します。私は200Kゴルーチンを入れたとえば、CPUの使用率が70%前後である私は、ディスク
私はゴルーチンを起動することなく、シミュレーションを実行し、遅さが内側かあるので、それは、非常に高速な終了を使用していないよ
ゴルーチンのために
私はいくつかの作業負荷を並行して実行するために、各ゴルーチンの内側に追加のゴルーチンを1回使用しようとしました。 CPU使用率は100%に上昇しましたが、全体の速度は50%減少しました...
ポインタを使用していくつかの大きな構造体をゴルーチンに渡しています。すべてのゴルーチンは同じデータを使用します。
誰かが私が最適化する必要があるかもしれない事を知っているか、私が実行できるテストを提案していますか?ありがとう!
goルーチンが構造体のデータを変更していますか? – Acidic
すべてのゴルーチンが連続的に実行されている(つまり、I/Oをブロックしていない)場合、システムが同時に実行できるスレッド数よりも多くのゴルーチンを持つことで、パフォーマンス上の利点は得られません。実際に、より多くのgoroutinesを持つことは、それらの間の切り替えに伴うオーバーヘッドのために物事を遅らせるでしょう。 –