Shell
測量命令的執行時間,包括擴展命令替換
我將如何測量由 shell 擴展的命令的執行時間?
例如:
➜ time sleep $(sleep 3; echo 1) sleep $(sleep 3; echo 1) 0.00s user 0.00s system 0% cpu 1.003 total
忽略被替換命令的時間。
如何測量總時間,以獲得四秒作為輸出?
答案比我想像的要簡單。感謝John B,可以為此使用子外殼
(...)
:➜ time (sleep $(sleep 3; echo 1)) ( sleep $(sleep 3; echo 1); ) 0.00s user 0.00s system 0% cpu 4.007 total
這發生在 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
一個簡單的解決方案是使用一些 from 分組:
$ zsh -c 'time ( sleep $(sleep 3; echo 1); )' ( sleep $(sleep 3; echo 1); ) 0,00s user 0,00s system 0% cpu 4,003 total