time コマンド

コマンドの実行時間を計測するコマンド。time のあとに実行するコマンドを引数で渡す。

$ time ls -al

time はコマンドを実行した後に、実行にかかった時間を標準エラー出力に書き出す。

time は外部コマンドではなく、シェルの組み込みコマンドである。シェルによって出力例はだいぶ違う。

zshでの例

$ time tar czf foobar.tar.gz foobar
tar czf foobar.tar.gz foobar  1.10s user 1.20s system 42% cpu 5.424 total

bashでの例

$ time tar czf foobar.tar.gz foobar

real    0m1.186s
user    0m0.755s
sys     0m0.427s

ヘルプ表示は、bashでは、他のシェルの組み込みコマンド(ビルトインコマンド)と同様に、 help time というふうに help コマンドでヘルプを表示できる。help も組み込みコマンドである。残念ながらzshではできないみたい。

プログラミング言語の中で実行時間を計測するには、 処理時間を計測参照。

現在の時刻を調べるのはtimeではなく、dateコマンドである。

パイプを使う場合

普通の外部コマンドとは違い、time はパイプの表記やリダイレクト表記よりも結合の優先順位が低いので、以下のようにパイプで繋いでも、パイプ全体の実行にかかった時間を測定できる。

$ time firstcommand | longlongcommand

zshのtimeコマンドでは、上記のようにパイプで複数つなげたコマンドを対象とする場合は、各コマンドごとの処理時間などを表示してくれる。bashではそれができない。

zshでの例

$ time tar cf - foobar | gzip > foobar.tar.gz
tar cf - foobar  0.00s user 0.07s system 6% cpu 1.134 total
gzip > foobar.tar.gz  0.72s user 0.35s system 93% cpu 1.151 total

bashでの例

$ time tar cf - foobar | gzip > foobar.tar.gz

real    0m1.168s
user    0m0.742s
sys     0m0.418s

timeの結果をリダイレクトしたい場合

timeの結果は標準エラー出力されるが、timeコマンドの出力をファイルに保存しようとして

$ time ls -al 2>time.txt

と書いても 2>time.txtls にしかかからない。ので、

$ (time ls -al) 2>time.txt

とするとよい。

オプション

-o ファイル名
結果をファイルに書き出す。このオプションはzshやbashの組み込みコマンドでは使えない。 /usr/bin/time なら使えた。
このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。