timeコマンドを使用すると、プログラムやコマンドの実行時間を計測することができます。
メモリの使用量など詳細な計測も可能です。
timeコマンドで実行時間を計測
timeコマンドでlsの速度を計測します。
$ time ls
file1.csv file2.csv
real 0m0.001s
user 0m0.000s
sys 0m0.001s
0.001秒で終了していことがわかります。
ちょっと早すぎるので、sleep処理をするシェルを作成します。
$ vi sleep.sh
#!/bin/sh
sleep 5
その後にtimeで時間を計測します。
$ time sh sleep.sh
real 0m5.003s
user 0m0.001s
sys 0m0.001s
5.003秒で終了しています、スリープで5秒待機しているのがわかります。
timeコマンドで使用メモリを確認する
/usr/bin/timeコマンドを使用するとメモリの使用量も確認できます。
普通に「time」打つとダメです、「/usr/bin/time」を使用します。
おそらく違うtimeコマンドが実行されているのかと。
$ /usr/bin/time -v sh sleep.sh
Command being timed: "sh sleep.sh"
User time (seconds): 0.00
System time (seconds): 0.00
Percent of CPU this job got: 0%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:05.00
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 3140
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 272
Voluntary context switches: 4
Involuntary context switches: 0
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
「Maximum resident set size」が最大メモリ使用量
「3140 (kbytes)」なので、3MBくらいです。
sleepしてるだけなのに結構消費しますね。
まとめ
「/usr/bin/time -v」を使えば実行時間もメモリ使用量も同時に確認ができるので便利です。
「Elapsed (wall clock) time」が実行時間です。
バッチなどを作成したときに計測すると負荷を事前に確認することができます。