7 bless { test => 23 }, $class;
10 package Bench::Direct;
11 use base qw(Bench::Base);
13 package Bench::ByHand;
14 use base qw(Bench::Base);
19 $self->{test} = (@_ == 1 ? $_[0] : [@_]);
24 package Bench::Class::Accessor;
25 use base qw(Class::Accessor);
26 __PACKAGE__->mk_accessors(qw(test));
29 package Bench::Class::Accessor::Fast;
30 use base qw(Class::Accessor::Fast);
31 __PACKAGE__->mk_accessors(qw(test));
33 package Bench::Class::Accessor::Faster;
34 use base qw(Class::Accessor::Faster);
35 __PACKAGE__->mk_accessors(qw(test));
37 my %init = ( test => 23 );
38 my $ca = Bench::Class::Accessor->new(\%init);
39 my $fast = Bench::Class::Accessor::Fast->new(\%init);
40 my $faster = Bench::Class::Accessor::Faster->new(\%init);
41 my $direct = Bench::Direct->new;
42 my $byhand = Bench::ByHand->new;
49 use Benchmark 'cmpthese';
55 'Basic' => sub { $foo = $ca->test; },
56 'Fast' => sub { $foo = $fast->test; },
57 'Faster' => sub { $foo = $faster->test; },
58 'Average' => sub { $foo = $byhand->test; },
59 'Direct' => sub { $foo = $direct->{test}; }
66 'Acc' => sub { $ca->test(42); },
67 'Fast' => sub { $fast->test(42); },
68 'Faster' => sub { $faster->test(42); },
69 'By hand' => sub { $byhand->test(42); },
70 'Direct' => sub { $direct->{test} = 42; }