2009-10-27 13 views
10

アプリケーションのCPU使用率を最大限にするにはどうすればよいですか?タスクマネージャで「リアルタイム」に設定しようとしましたが、顕著な改善はありませんでした。これは50%に止まっています。CPU使用率を最大にする

私は私はあなたがデュアルコアコンピュータ上で実行されていると仮定しているのVisual C++ 2005

+1

プロセス/スレッドの優先順位はCPUの負荷に影響しませんが、実行されるスレッド間で使用可能なCPUがどのように分配されるかにのみ影響します。アイドル優先度のスレッドが1つある場合、tiは1つのコアのすべてのサイクルを取得します。 – peterchen

答えて

27

でWindows XPで働いています。別のスレッドを開始してみてください。

アプリケーションで1つのスレッドしか実行できない場合は、一度に1つのCPUコアでしか実行できません。これを解決するには、作業を半分に分割し、1つのCPUコアを半分に、もう1つのコアをもう一方の半分に実行させることです。もちろん、4コア以上で動作するように一般化したいかもしれません。

アプリケーションの優先度を設定すると、プロセスがCPUを最初に使用するチャンスに移動するだけです。 CPUを待っているリアルタイムプロセスがある場合、優先度の高いものより前に取得します。あなたのアプリの優先度が低い場合でも、十分な作業があればCPUコアを最大限に活用することができ、優先度の高いプロセスでそのコアを使いたいとは限りません。マルチスレッドの概要について

、これらの質問をチェックアウト:

+0

ありがとう!ああ、私はOpenMPのそっくりだよ。 – Jacob

9

をあなたはおそらくデュアルコアプロセッサを持っており、あなたのプログラムは、おそらくシングルでありますスレッド化されています。

0

リアルタイムは必ずしもCPUサイクルを消費するとは限りません。最も基本的な数のループを実行する1つまたは2つまたは3つのスレッドを生成してみてください。メモリを使用したい場合は、ループ内の任意のオブジェクトを割り当てたり割り当て解除したりすることもできます。

5

優先度は、プロセスが使用するCPUの量にほとんどまたはまったく関係しません。これは、実行するが利用可能な場合は、低い優先度であっても実行するようにスケジュールされます。優先順位は、実行可能なスレッドが2つ以上ある場合にのみ選択できます。

番号などPrime95実行最低可能優先度でプログラムを噛み砕く、あなたが持っている限り多くのCPUをすべて使用するために、複数のスレッドを生成:(これは極端な単純化である。注意してください)。