ベンチマークテストでプログラムの実行時間が知りたいことがありますよね?
かんたんな方法としてtimeコマンドがあります。そのシンプルな使い方を説明します。
CPUの処理時間も計測され、ユーザー、システムのCPU時間が別々に出るので、シンプルな割に使い勝手が良い。
time command
command | プログラムの実行コマンド。 シェルコマンドでもよい。 |
timeコマンドのパラメータにプログラムの実行コマンドを入力するだけです。
たとえば、test.phpの実行時間を計測します。
time php test.php
すると、結果が標準出力されます。
timeコマンドの結果
real 0m1.758s
user 0m0.020s
sys 0m0.022s
real | プログラムの実行時間 |
user | 実行プログラムのユーザーCPU時間。 CPUがユーザーモードのとき。 |
sys | システムCPU時間 CPUがカーネルモードのとき。 |
プログラムの開始から終了までのトータルの時間はrealです。user, sysの時間も含まれます。
user, sysは、CPUが処理した時間で、
user + sys = プログラムを実行するのに使ったCPUの処理時間。
プログラムのCPU負荷が見れます。
timeコマンドにはオプション-pがありますが、計測結果の時間の書式を変えるだけなので、そこまで必要ありません。
ここでは説明を省略します。
realはuser + sysにならない
user, sysはファイルの読み込み・書き込みなどの時間は含まれません。ファイル操作にはCPUが関係ないHDDへのアクセスがあります。
メモリまわりも同じ。
だから、realはuser + sysよりも大きくなることがあります。
標準入出力も、ファイル操作ほどではないですがCPU以外の処理時間があります。