2012-02-23 1 views
0

私は有名な旅行セールスマン問題のシングルスレッドブルートフォースバージョンを実行しています。YourKitはCPUが25%で使用されているということを指摘しています。私は完全にメモリ(IOなし)からアルゴリズムを実行していますが、私のCPU使用率は25%以下です。ボトルネックの可能性はありますか?

その理由は何ですか?これらのアルゴリズムはCPU集約度が高いと言われていますが、この場合はCPUが無駄になっているようです。

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

私は正しいですか?

+7

ええええええええ、あなたはクアッドコアのマシンを持っていると思います。 – Mysticial

+0

クアッドコアCPUはありませんか? –

+1

はい私は持っています。/facep。 –

答えて

6

回答を促すコメント。

あなたのプログラムはシングルスレッドだが、あなたは25%のCPUしか使用していないと言います。

これは、クアッドコアマシンがあることを示しています。 (またはおそらくハイパースレッディングを備えたデュアルコア)シングルスレッドでは、1つ以上のコアを使用することはできません。

あなたが見ているのは正常です。サイドポイントとして


、そのようなロックとメモリアクセスなどのボトルネックが直接あなたのCPU使用率を低下させません。全時間キャッシュが失われたシングルスレッド・プログラムは、実際の計算を実行しているものと同じ25%の使用率(クワッド・コア上)を示します。

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

4

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

4つのコア(ハイパースレッディングの有無にかかわらず)がありますか?

何が起こるか:1つのプロセスが4つのコア間をジャンプします。 1つのコアでは、平均利用率は25%です。

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

RAMアクセス時間は、CPU時間の一部です。

関連する問題