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:当たり前だけど、実行結果は毎回変わりますよ