私が書いたアプリケーションを Windows 7 Professional 32 ビット SP 1 の 1 台のマシンで実行すると、問題なく動作し、システムの CPU を 100% 使用します。
ただし、Windows Server 2008 で同じアプリケーションを実行すると、100% の CPU 使用率が表示されません。
CPU の 100% も使用しないのはなぜですか? また、そうするようにするにはどうすればよいですか?
私が書いたアプリケーションを Windows 7 Professional 32 ビット SP 1 の 1 台のマシンで実行すると、問題なく動作し、システムの CPU を 100% 使用します。
ただし、Windows Server 2008 で同じアプリケーションを実行すると、100% の CPU 使用率が表示されません。
CPU の 100% も使用しないのはなぜですか? また、そうするようにするにはどうすればよいですか?
さて、通常は、負荷が増加したときに自分の頭のスペースを残したいので、100%CPUを使用することは望ましくありません。通常、プログラムは他の要因、通常はI / Oによって制限され始めるため、CPUを常に使用するわけではありません。
たとえば、GUIアプリケーションを例にとると、ユーザーが何かをクリックするまで、それは何の役にも立ちません。それ以外の場合は、ユーザーの入力を待ち続けます。
あなたは愚かにこれを次のように書くかもしれません
while(true){
if(there is user input){
use the user input
}
}
このループは非常に高速に実行されるため、CPUが消費されます。したがって、気の利いた買い物客は、ユーザーがクリックしてから応答するまでの最大50ミリ秒の遅延に対処できることに気付くかもしれません。したがって、次のようなある種の睡眠を追加します...
while(true){
if(there is user input){
use the user input
}
sleep for 50 ms
}
CPUに他のことをする機会を与えることは重要です。そうしないと、あなたのプログラムは、アイスクリームマシンの下に頭を突き刺し、他の人においしいアイスクリームを食べさせない太った子供のようなものです。
編集
私は比喩が大好きなので、ここにあなたのためのものがあります。
CPU使用率を道路、プログラムを車と考えてください。道路がすべてきれいであれば、車がゴムを燃やして、できるだけ速く通りを進むのは比較的安全です。車が多ければ多いほど、お互いに譲歩しなければならないので、人々がオフまたはオンになるのを待ちましょう。
道路(CPU)をレース(ゲーム)のようなものに捧げる場合は、できるだけ速く安全に移動できるように、歩行者や非レーシングカー(その他のプログラム)などを削除する傾向があります。
今、私は比喩が得意だとは決して言いませんでした。そして、安全に運転することを忘れないでください、そしてアイスクリームを楽しんでください!
プログラムが使用する CPU の割合は、プログラムの効率性とは何の関係もありません。
時々他のことをしたいだけのCPUと関係があります。
実際、プログラムが I/O を実行すると、プログラムがそれを待っているときに実行されていないという理由だけで、CPU の割合が下がります。