31 Mac のデフォールトのシェルzsh の time コマンド

time コマンドというのは実体は色々あるが、どれも
time コマンド
として、コマンド実行に要した色々な時間を測る、というものである。


以前の macOS のデフォールト・シェルだった bash を使っていると、
$ which time
/usr/bin/time
$ time FreeFem++ poisson-kikuchi-square.edp
(むにゃむにゃ)
real	0m1.295s
user	0m0.113s
sys	0m0.075s
のようになる。

つまり /usr/bin/time が起動されて、 経過時間、ユーザー時間、システム時間の順に表示される。


現在の macOS のデフォールト・シェルである zsh では、 組み込みのtime コマンドがある。 使い方は、/usr/bin/time と同じだが、表示の仕方が異なる。

% time FreeFem++ poisson-kikuchi-square.edp
(むにゃむにゃ)
FreeFem++ poisson-kikuchi-square.edp  0.11s user 0.06s system 5% cpu 2.888 total

環境変数 TIMEFMT で制御できる。
% echo $TIMEFMT
%J  %U user %S system %P cpu %*E total

real, user, sys の順に出したければ、
% export TIMEFMT="real %E  user %U   sys %S"

tcsh の built-in の真似をしてみると
% export TIMEFMT="%Uu %Ss %E %P"
zsh の内部コマンドでは、 単位の秒が表示されるので (それはそれで良いかもしれない…tcsh の方が良くない気がする)、 0.13su 0.06ss 0.87s 21% みたいになってイマイチだな。



桂田 祐史