|
#!/usr/bin/perl
has classes => (
isa => "ArrayRef" ,
is => "rw" ,
auto_deref => 1,
);
has benchmarks => (
isa => "ArrayRef" ,
is => "rw" ,
auto_deref => 1,
);
has min_time => (
isa => "Num" ,
is => "rw" ,
default => 5,
);
sub run {
my $self = shift ;
foreach my $bench ( $self ->benchmarks ) {
my $bench_class = delete $bench ->{class};
my $name = delete $bench ->{name} || $bench_class ;
my @bench_args = %$bench ;
eval "require $bench_class" ;
die $@ if $@;
my %res ;
foreach my $class ( $self ->classes ) {
eval "require $class" ;
die $@ if $@;
my $b = $bench_class ->new( @bench_args , class => $class );
$res { $class } = countit( $self ->min_time, $b ->code );
}
print "- $name:\n" ;
cmpthese( \ %res );
print "\n" ;
}
}
__PACKAGE__;
|