Improve a benchmark
[gitmo/Mouse.git] / benchmarks / vs_caf_w_destructors.pl
1 #!perl
2
3 ### MODULES
4
5
6 {
7     package PlainMoose;
8     use Moose;
9     has foo => (is => 'rw');
10
11     my $i = 0;
12     sub DEMOLISH { $i++ }
13     __PACKAGE__->meta->make_immutable();
14 }
15 {
16     package PlainMouse;
17     use Mouse;
18     has foo => (is => 'rw');
19
20     my $i = 0;
21     sub DEMOLISH { $i++ }
22     __PACKAGE__->meta->make_immutable();
23 }
24 {
25     package ClassAccessorFast;
26     use warnings;
27     use strict;
28     use base 'Class::Accessor::Fast';
29     __PACKAGE__->mk_accessors(qw(foo));
30
31     my $i = 0;
32     sub DESTROY { $i++ }
33 }
34
35 use Benchmark qw(cmpthese);
36
37 my $moose                = PlainMoose->new;
38 my $mouse                = PlainMouse->new;
39 my $caf                  = ClassAccessorFast->new;
40
41 print "\nCREATION AND DESTRUCTION\n";
42 cmpthese(-1, {
43     Moose                       => sub { my $x = PlainMoose->new(foo => 23) },
44     Mouse                       => sub { my $x = PlainMouse->new(foo => 23) },
45     ClassAccessorFast           => sub { my $x = ClassAccessorFast->new({foo => 23}) },
46 }, 'noc');