time コマンド 2016/07/18
コマンドの実行時間を計測するコマンド。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
コマンドである。
パイプを使う場合 2016/07/18
普通の外部コマンドとは違い、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
の結果をリダイレクトしたい場合
2016/07/18
time
の結果は標準エラー出力されるが、time
コマンドの出力をファイルに保存しようとして
$ time ls -al 2>time.txt
と書いても 2>time.txt
は ls
にしかかからない。ので、
$ (time ls -al) 2>time.txt
とするとよい。
オプション 2016/07/18
-o
ファイル名- 結果をファイルに書き出す。このオプションはzshやbashの組み込みコマンドでは使えない。
/usr/bin/time
なら使えた。