Commit | Line | Data |
4402b4bc |
1 | #!perl |
2 | use strict; |
3 | use warnings; |
4 | use Benchmark qw/cmpthese/; |
5 | |
6 | for my $klass (qw/Moose Mouse/) { |
7 | eval qq{ |
8 | package ${klass}One; |
9 | use $klass; |
10 | has n => ( |
4128ec2b |
11 | is => 'rw', |
12 | isa => 'Int', |
13 | ); |
14 | has m => ( |
15 | is => 'rw', |
16 | isa => 'Int', |
17 | default => 42, |
4402b4bc |
18 | ); |
19 | no $klass; |
20 | __PACKAGE__->meta->make_immutable; |
21 | }; |
22 | die $@ if $@; |
23 | } |
24 | |
25 | print "Class::MOP: $Class::MOP::VERSION\n"; |
26 | print "Moose: $Moose::VERSION\n"; |
27 | print "Mouse: $Mouse::VERSION\n"; |
28 | print "---- new\n"; |
29 | cmpthese( |
30 | -1 => { |
31 | map { my $x = $_; $_ => sub { $x->new(n => 3) } } |
32 | map { "${_}One" } |
33 | qw/Moose Mouse/ |
34 | } |
35 | ); |
36 | |
37 | print "---- new,set\n"; |
38 | cmpthese( |
39 | -1 => { |
40 | map { my $y = $_; $_ => sub { $y->new(n => 3)->n(5) } } |
41 | map { "${_}One" } |
42 | qw/Moose Mouse/ |
43 | } |
44 | ); |
45 | |
46 | print "---- set\n"; |
47 | my %c = map { $_ => "${_}One"->new(n => 3) } qw/Moose Mouse/; |
48 | cmpthese( |
49 | -1 => { |
50 | map { my $y = $_; $_ => sub { $c{$y}->n(5) } } |
51 | qw/Moose Mouse/ |
52 | } |
53 | ); |
54 | |
55 | print "---- get\n"; |
56 | cmpthese( |
57 | -1 => { |
58 | map { my $y = $_; $_ => sub { $c{$y}->n() } } |
59 | qw/Moose Mouse/ |
60 | } |
61 | ); |
62 | |