Fix docs. The phrases "Fewer than 1%" and "over 96%" are very confusing, so I removed...
[gitmo/Mouse.git] / benchmarks / basic.pl
CommitLineData
4402b4bc 1#!perl
2use strict;
3use warnings;
4use Benchmark qw/cmpthese/;
5
6for 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
25print "Class::MOP: $Class::MOP::VERSION\n";
26print "Moose: $Moose::VERSION\n";
27print "Mouse: $Mouse::VERSION\n";
28print "---- new\n";
29cmpthese(
30 -1 => {
31 map { my $x = $_; $_ => sub { $x->new(n => 3) } }
32 map { "${_}One" }
33 qw/Moose Mouse/
34 }
35);
36
37print "---- new,set\n";
38cmpthese(
39 -1 => {
40 map { my $y = $_; $_ => sub { $y->new(n => 3)->n(5) } }
41 map { "${_}One" }
42 qw/Moose Mouse/
43 }
44);
45
46print "---- set\n";
47my %c = map { $_ => "${_}One"->new(n => 3) } qw/Moose Mouse/;
48cmpthese(
49 -1 => {
50 map { my $y = $_; $_ => sub { $c{$y}->n(5) } }
51 qw/Moose Mouse/
52 }
53);
54
55print "---- get\n";
56cmpthese(
57 -1 => {
58 map { my $y = $_; $_ => sub { $c{$y}->n() } }
59 qw/Moose Mouse/
60 }
61);
62