複雑なアルゴリズムを実装するループでは CPU 時間の 100% を使用するのに、ビジー ループでは CPU 時間を 100% 使用することがよくあるのはなぜですか?
ありがとう :)
5 に答える
CPU アーキテクチャの JUMP 命令は、パイプラインをフラッシュさせるため、非効率的です。ビジー ループは、事実上無限の一連の JUMP 命令です。
複雑なアルゴリズムは、確かに CPU を 100% 使用できます。ただし、複雑なアルゴリズムを実装する多くのループは、定期的に明示的にスレッドを生成するか、スレッドが生成されるか、待機を必要とする何か (co-プロセッサ) が発生します。
まず、ビジー ループが 100% を使用している場合は、正しく実行されていません。少し寝ます。
第 2 に、複雑なアルゴリズムでは、単にループするのではなく、値を格納するためのメモリが必要になることがよくあります。スレッドがメモリやディスクなどの外部リソースを使用する必要があるときはいつでも、CPU は少し待たなければなりません。これが、使用率が 100% 未満になる理由です。
「ビジー ループ」はメモリと対話する必要がないため、基本的に CPU は外部入力を待たずにすべての作業を行っています。
その「複雑なアルゴリズム」が何をしているかに依存します。ハードドライブへのアクセスを行いますか? ネットワーク要求?他のハードウェアとやり取りしますか? その場合、CPU はこれらの処理が完了するのを待たなければならないため、その情報が戻ってくるのを待つ間、何もせずに (または他の作業へのコンテキスト スイッチを実行して) 待機します。