blob: 09ac1b640a495fa4998534ebfa61d9a9bb4b1f4a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
#!/usr/bin/perl
package Bench::Run;
use Moose;
use Benchmark qw/:hireswallclock :all/;
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__;
__END__
|