Commit | Line | Data |
b988c856 |
1 | #!perl |
2 | |
3 | ### MODULES |
4 | |
5 | |
6 | { |
7 | package PlainMoose; |
8 | use Moose; |
9 | has foo => (is => 'rw'); |
10 | |
33483c83 |
11 | my $i = 0; |
12 | sub DEMOLISH { $i++ } |
b988c856 |
13 | __PACKAGE__->meta->make_immutable(); |
14 | } |
15 | { |
16 | package PlainMouse; |
17 | use Mouse; |
18 | has foo => (is => 'rw'); |
19 | |
33483c83 |
20 | my $i = 0; |
21 | sub DEMOLISH { $i++ } |
b988c856 |
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 | |
33483c83 |
31 | my $i = 0; |
32 | sub DESTROY { $i++ } |
b988c856 |
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'); |