timeコマンドで処理の実行時間を計測する

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」が実行時間です。

バッチなどを作成したときに計測すると負荷を事前に確認することができます。

関連記事
最新記事