シェル拡張コマンドの実行時間をどのように測定しますか?
たとえば、
➜ time sleep $(sleep 3; echo 1)
sleep $(sleep 3; echo 1) 0.00s user 0.00s system 0% cpu 1.003 total
代替コマンドのタイミングを無視します。
4秒を出力するのにかかる合計時間をどのように測定できますか?
答え1
答えは思ったより簡単です。 ~に帰属ジョンB(...)
、これを達成するためにサブシェルを使用できます。
➜ time (sleep $(sleep 3; echo 1))
( sleep $(sleep 3; echo 1); ) 0.00s user 0.00s system 0% cpu 4.007 total
答え2
これはzshで起こります。
$ zsh -c 'time sleep $(sleep 3; echo 1)'
sleep $(sleep 3; echo 1) 0,00s user 0,00s system 0% cpu 1,001 total
しかし、bash(またはksh)ではそうではありません。
$ bash -c 'time sleep $(sleep 3; echo 1)'
real 0m4.003s
user 0m0.000s
sys 0m0.000s
簡単な解決策は、いくつかのグループ化を使用することです。
$ zsh -c 'time ( sleep $(sleep 3; echo 1); )'
( sleep $(sleep 3; echo 1); ) 0,00s user 0,00s system 0% cpu 4,003 total