Fix docs. The phrases "Fewer than 1%" and "over 96%" are very confusing, so I removed...
[gitmo/Mouse.git] / benchmarks / vs_caf.pl
CommitLineData
1e582397 1#!perl
2
3### MODULES
4
5
6{
7 package PlainMoose;
8 use Moose;
9 has foo => (is => 'rw');
10 __PACKAGE__->meta->make_immutable();
11}
12{
13 package PlainMouse;
14 use Mouse;
15 has foo => (is => 'rw');
16 __PACKAGE__->meta->make_immutable();
17}
18{
19 package ClassAccessorFast;
20 use warnings;
21 use strict;
22 use base 'Class::Accessor::Fast';
23 __PACKAGE__->mk_accessors(qw(foo));
24}
25
26use Benchmark qw(cmpthese);
27
28my $moose = PlainMoose->new;
29my $mouse = PlainMouse->new;
30my $caf = ClassAccessorFast->new;
31
32
33print "\nSETTING\n";
34cmpthese(-1, {
35 Moose => sub { $moose->foo(23) },
36 Mouse => sub { $mouse->foo(23) },
37 ClassAccessorFast => sub { $caf->foo(23) },
38}, 'noc');
39
40print "\nGETTING\n";
41cmpthese(-1, {
42 Moose => sub { $moose->foo },
43 Mouse => sub { $mouse->foo },
44 ClassAccessorFast => sub { $caf->foo },
45}, 'noc');
46
57d5cc86 47print "\nCREATION AND DESTRUCTION\n";
48cmpthese(-1, {
49 Moose => sub { my $x = PlainMoose->new(foo => 23) },
50 Mouse => sub { my $x = PlainMouse->new(foo => 23) },
51 ClassAccessorFast => sub { my $x = ClassAccessorFast->new({foo => 23}) },
1e582397 52}, 'noc');