Don't set package_defined_in automatically, because Moose doesn't do that.
[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     sub DEMOLISH { }
12     __PACKAGE__->meta->make_immutable();
13 }
14 {
15     package PlainMouse;
16     use Mouse;
17     has foo => (is => 'rw');
18
19     sub DEMOLISH { }
20     __PACKAGE__->meta->make_immutable();
21 }
22 {
23     package ClassAccessorFast;
24     use warnings;
25     use strict;
26     use base 'Class::Accessor::Fast';
27     __PACKAGE__->mk_accessors(qw(foo));
28
29     sub DESTROY { }
30 }
31
32 use Benchmark qw(cmpthese);
33
34 my $moose                = PlainMoose->new;
35 my $mouse                = PlainMouse->new;
36 my $caf                  = ClassAccessorFast->new;
37
38 print "\nCREATION AND DESTRUCTION\n";
39 cmpthese(-1, {
40     Moose                       => sub { my $x = PlainMoose->new(foo => 23) },
41     Mouse                       => sub { my $x = PlainMouse->new(foo => 23) },
42     ClassAccessorFast           => sub { my $x = ClassAccessorFast->new({foo => 23}) },
43 }, 'noc');