#!/usr/bin/perl use Time::HiRes; my @func = (); my @scd = (); my $time0 = 0; my $time1 = 0; ############### 検証するルーチン ############## $func[0] = sub { my $hoge; for (0..5) { $hoge += $_; } }; $func[1] = sub { my $hoge; foreach (0..5) {; $hoge += $_; } }; ############################################### my $aa = 0; my $loopnum = 100; while(1){ for(0..$#func){ $scd[$_] = 0; } for(1..$loopnum){ for (0..$#func) { $time0 = µtime; $ret = &{$func[$_]}(); $time1 = µtime; $scd[$_] += 1000 * ($time1 - $time0); } } foreach(@scd){ print $_/$loopnum; print "\n"; } $aa = ; $aa =~ s/[\n\r]*//; last if($aa =~ /^[qQ]$/); } sub microtime{ return Time::HiRes::time; }