#!/usr/bin/perl
BEGIN {
$DB::single = 1;
}
use Object::Tiny ();
use Class::Accessor::Fast ();
use Foo_Bar_Accessor ();
use Foo_Bar_Accessor2 ();
use Foo_Bar_Tiny ();
use Foo_Bar_Tiny2 ();
use Benchmark ':all';
print "\nBenchmarking constructor plus accessors...\n";
cmpthese( 1000000, {
'tiny' => '
my $object = Foo_Bar_Tiny->new(
foo => 1,
bar => 2,
baz => 4,
);
$object->foo;
$object->bar;
$object->baz;
',
'accessor' => '
my $object = Foo_Bar_Accessor->new( {
foo => 1,
bar => 2,
baz => 4,
} );
$object->foo;
$object->bar;
$object->baz;
',
} );
sleep 1;
print "\nBenchmarking constructor alone...\n";
cmpthese( 1000000, {
'tiny' => '
Foo_Bar_Tiny->new(
foo => 1,
bar => 2,
baz => 4,
);
',
'accessor' => '
Foo_Bar_Accessor->new( {
foo => 1,
bar => 2,
baz => 4,
} );
',
} );
sleep 1;
print "\nBenchmarking accessors alone...\n";
my $tiny = Foo_Bar_Tiny->new(
foo => 1,
bar => 2,
baz => 4,
);
my $accessor = Foo_Bar_Tiny->new( {
foo => 1,
bar => 2,
baz => 3,
} );
cmpthese( 1000, {
'tiny' => sub {
foreach ( 1 .. 1000 ) {
$tiny->foo;
$tiny->bar;
$tiny->baz;
}
},
'accessor' => sub {
foreach ( 1 .. 1000 ) {
$accessor->foo;
$accessor->bar;
$accessor->baz;
}
},
} );