Benchmark-Confirm
view release on metacpan or search on metacpan
lib/Benchmark/Confirm.pm view on Meta::CPAN
# based Benchmark 1.13
sub runloop {
my($n, $c) = @_;
$n+=0; # force numeric now, so garbage won't creep into the eval
croak "negative loopcount $n" if $n<0;
confess usage unless defined $c;
my($t0, $t1, $td); # before, after, difference
# find package of caller so we can execute code there
my($curpack) = caller(0);
my($i, $pack)= 0;
while (($pack) = caller(++$i)) {
last if $pack ne $curpack;
}
my ($subcode, $subref, $confirmref);
if (ref $c eq 'CODE') {
$subcode = "sub { for (1 .. $n) { local \$_; package $pack; &\$c; } }";
$subref = eval $subcode; ## no critic
$confirmref = eval "sub { package $pack; &\$c; }"; ## no critic
}
else {
( run in 0.396 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )