コマンドの実行時間を計測するコマンド。time
のあとに実行するコマンドを引数で渡す。
例
$ time ls -al
time
はコマンドを実行した後に、実行にかかった時間を標準エラー出力に書き出す。
time
は外部コマンドではなく、シェルの組み込みコマンドである。シェルによって出力例はだいぶ違う。
zshでの例
$ time tar czf foobar.tar.gz foobartar czf foobar.tar.gz foobar 1.10s user 1.20s system 42% cpu 5.424 total
bashでの例
$ time tar czf foobar.tar.gz foobarreal 0m1.186suser 0m0.755ssys 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.gztar cf - foobar 0.00s user 0.07s system 6% cpu 1.134 totalgzip > foobar.tar.gz 0.72s user 0.35s system 93% cpu 1.151 total
bashでの例
$ time tar cf - foobar | gzip > foobar.tar.gzreal 0m1.168suser 0m0.742ssys 0m0.418s
time
の結果をリダイレクトしたい場合2016/07/18time
の結果は標準エラー出力されるが、time
コマンドの出力をファイルに保存しようとして
$ time ls -al 2>time.txt
と書いても2>time.txt
はls
にしかかからない。ので、
$ (time ls -al) 2>time.txt
とするとよい。
-o
ファイル名/usr/bin/time
なら使えた。