プロセスをバックグラウンドに配置するとパフォーマンスが低下しますか?

プロセスをバックグラウンドに配置するとパフォーマンスが低下しますか?

私がするなら:

sleep 1 

比較的

sleep 1 & wait $!

フォアグラウンドプロセスとバックグラウンドプロセスを作成するときのCPU使用率に違いはありますか?それとも、2つのラインのパフォーマンスはまったく同じですか?

答え1

これら2つのコマンドを使用して、シェルは1/スリープを実行する並列サブプロセスを作成し、2/オペレーティングシステムに...スリーププロセスが終了するまでシェルプロセスを一時停止するように指示します。これでパフォーマンスは同じです。

答え2

はい。

私のシステムでは、1つ目は3.0ミリ秒かかり、2つ目は3.3ミリ秒のCPU時間がかかります。

実際、1秒間寝ると、CPU時間が0.3ミリ秒も心配されません。

0.3msは、おそらく背景forkに追加する必要がある追加コンテンツによるものです。sleepつまり、これはバックグラウンドでジョブを実行するための10%の追加コストではなく、1回限りのコストです。

関連情報