1秒以下の時間計測
Perlで処理時間を計測する用がありました。
で、1秒単位はtimeで出来る。が、1秒以下は? って事で悩んだのでメモ。
Time::HiResモジュールのgettimeofdayを使えば出来る事が判明!
以下のようにすると、秒とマイクロ秒が取得できる。
use Time::HiRes qw(gettimeofday); my ($sec, $microsec) = gettimeofday; printf "%d %d", $sec, $microsec;
一応、実行結果↓*1
1207140957 140838
で、かなり無理やりな感が否めない処理時間計測は下記。
use Time::HiRes qw(gettimeofday); my ($sec, $microsec) = gettimeofday; $microsec = sprintf("%06d", $microsec); my $time1 = $sec . '.' . $microsec; なんか処理 ($sec, $microsec) = gettimeofday; $microsec = sprintf("%06d", $microsec); my $time2 = $sec . '.' . $microsec; my $syoritime = $time2 - $time1; print $syoritime;
これで何とか、マイクロ秒までの処理時間が計測できます。
しかし、恐ろしく微妙なソースな気がする今日この頃…。
*1:当たり前だけど、実行結果は毎回変わりますよ