0

私は有名な巡回セールスマン問題のシングルスレッドブルートフォースバージョンを実行してきましたが、YourKitは、CPUが最大で25%使用されているという事実を正確に示しています。

その事実の背後にある理由は何ですか?この種のアルゴリズムはCPUを非常に集中的に使用すると言われていますが、この場合、CPUの無駄が多いようです。

私の理論では、ボトルネックはRAMアクセスでなければなりません。私が実行しているアルゴリズムはシングルスレッドであるため、ロックの問題は問題外のようです。

私は正しいですか?

4

2 に答える 2

6

コメントを宣伝して回答します。

プログラムはシングルスレッドであると言いますが、使用しているCPUは25%にすぎません。

これは、クアッドコアマシンを使用していることを示しています。(またはハイパースレッディングを使用したデュアルコア)シングルスレッドでは、複数のコアを使用することはできません。

だからあなたが見ているものは正常です。


副次的な点として、ロックやメモリアクセスなどのボトルネックは、CPU使用率を直接低下させることはありません。キャッシュの欠落に全時間を費やすシングルスレッドプログラムでも、実際の計算を実行しているプログラムと同じ25%の使用率(クアッドコアで)が表示されます。

マルチスレッドアプリケーションでは、このようなボトルネックが他のスレッドの実行をブロックしたり、負荷分散に影響を与えたりすると、CPU使用率に影響を与える可能性があります。

于 2012-02-23T07:45:27.460 に答える
4

... CPUは最大で25%使用されています。

4つのコア(ハイパースレッディングありまたはなし)がありますか?

何が起こるか:あなたの1つのプロセスは4つのコアの間をジャンプします。1つのコアの場合、これにより平均使用率は25%になります。

私の理論では、ボトルネックはRAMアクセスでなければなりません。私が実行しているアルゴリズムはシングルスレッドであるため、ロックの問題は問題外のようです。

RAMアクセス時間は個別に計算されるのではなく、CPU時間の一部です。

于 2012-02-23T07:45:16.660 に答える