2016-06-12 6 views
0

私が構築している小さなキャッシュシステムのパフォーマンスを見るために、10Millionの挿入ベンチマークを実行していました。 Activity Monitorを見て、私はmain Goプロセスが(800%の)100%のCPUしか表示していないことに気付きました。ベンチマーク実行時に100%しか表示されていません

ループを8つのコアすべてに分割するためにループを分割する必要がありますか、別の理由がありますか?

テストコードは本体のテスト機能のループではないので、私はコードをポストしていません。

+2

ループが1つしかないゴルーチンが1つしかない場合、実際には複数のコアを使用することはできません。 – JimB

答えて

1

アプリケーションが1つのスレッドしか使用していないので、100%で動作するコアは1つだけです。
複数のコアを使用する場合は、シェル環境をGOMAXPROCSに設定することを忘れないでください。そうしないと、1つのコアのみが使用されます。
複数のプロセスを使用すると、アプリケーションがさらに遅くなる可能性があることを覚えておいてください。振る舞いが本質的に連続的であれば、アプリケーションを高速化することはできません。goroutineを追加するだけです。あなたの振る舞いが本質的に並行している場合にのみ、マルチスレッドの大きな利点を得ることができます。

+0

はい、これは事柄を明確にします。 'ランタイム'は、(デフォルトの)最大コアが稼働していることを示しています。私は明日いくつかのテストを行い、私のシステムのブートアップ部分をゴルーチンに入れていくことの違いを見ていきます。 –

関連する問題