Improve a benchmark
[gitmo/Mouse.git] / benchmarks / vs_caf_w_destructors.pl
CommitLineData
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
35use Benchmark qw(cmpthese);
36
37my $moose = PlainMoose->new;
38my $mouse = PlainMouse->new;
39my $caf = ClassAccessorFast->new;
40
41print "\nCREATION AND DESTRUCTION\n";
42cmpthese(-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');