アプリケーションの CPU 使用率を最大化するにはどうすればよいですか? タスク マネージャーで「リアルタイム」に設定してみましたが、目立った改善は見られず、50% のままでした。
Windows XP で Visual C++ 2005 を使用しています。
アプリケーションの CPU 使用率を最大化するにはどうすればよいですか? タスク マネージャーで「リアルタイム」に設定してみましたが、目立った改善は見られず、50% のままでした。
Windows XP で Visual C++ 2005 を使用しています。
デュアルコアコンピューターで実行していると仮定しています。別のスレッドを開始してみてください。
アプリケーションに実行スレッドが 1 つしかない場合は、一度に 1 つの CPU コアでしか実行できません。これに対する解決策は、作業を半分に分割し、1 つの CPU コアで半分を実行し、もう 1 つのコアで残りの半分を実行することです。もちろん、4 コア以上で動作するようにこれを一般化することもできます....
アプリケーションの優先順位を設定しても、プロセスが最初に CPU を使用する機会が得られるキューにアプリケーションが移動するだけです。CPU を待機しているリアルタイム プロセスが存在する場合、そのプロセスは常に高い優先度の前に取得され、優先度リストの下に続きます。アプリの優先度が低くても、実行する作業が十分にあり、優先度の高いプロセスがそのコアを使用しない場合は、CPU コアを使い果たす可能性があります。
マルチスレッドの概要については、次の質問を確認してください。
おそらくデュアル コア プロセッサを使用しており、プログラムはおそらくシングル スレッドです。
優先度は、プロセスが使用する CPU の量とはほとんど、またはまったく関係がありません。これは、実行可能なものがある場合、優先度が低くても、OS が実行するようにスケジュールするためです。優先度は、選択できる実行可能なスレッドが 2 つ以上ある場合にのみ発生します。(注: これは極端な単純化です。)
Prime95などの数値計算プログラムは、可能な限り低い優先度で実行され、複数のスレッドを生成して、所有しているすべての CPU を使用します。
リアルタイムが必ずしも CPU サイクルを消費するとは限りません。最も基本的な、重要なタイトなループを実行するスレッドを 1 つまたは 2 つ、または 3 つ生成してみてください。メモリを (乱用) 使用したい場合は、ループ内で任意のオブジェクトを割り当ておよび割り当て解除することもできます。