Perlでミリ秒以下の計測を行うためには Time::HiRes モジュールを利用します。
以下にサンプルを示します。
use strict;
use warnings;
use utf8;
use feature qw( say );
binmode(STDOUT, ":utf8");
use Time::HiRes qw( usleep gettimeofday tv_interval );
# 現在時刻を取得([currentsec, currentmicrosec]の構造になっている)
my $t0 = [gettimeofday];
# 200 * 1000マイクロ秒 → 200ミリ秒のsleep
usleep(200 * 1000);
# 浮動小数点数で経過時間を取得(このサンプルだと0.20xxxx秒程)
my $elapsed = tv_interval($t0);
say int($elapsed * 1000), "ミリ秒";
お手軽にワンライナーで実験するなら次のようになります。
perl -MTime::HiRes=usleep,gettimeofday,tv_interval -E 'my $t0 = [gettimeofday]; usleep(200 * 1000); say int(tv_interval($t0) * 1000)'
特定の関数の実行時間を測りたいときはミリ秒の精度が欲しいため、筆者は上記の方法でよく計測しています。