change directory structure
[gitmo/Mouse.git] / author / benchmarks / basic.pl
diff --git a/author/benchmarks/basic.pl b/author/benchmarks/basic.pl
new file mode 100644 (file)
index 0000000..bdc3de7
--- /dev/null
@@ -0,0 +1,39 @@
+use strict;
+use warnings;
+use Benchmark qw/cmpthese/;
+use String::TT qw/tt/;
+
+for my $klass (qw/Moose Mouse/) {
+    eval tt(q{
+        package [% klass %]One;
+        use [% klass %];
+        has n => (
+            is => 'rw',
+            isa => 'Int',
+        );
+        no [% klass %];
+        __PACKAGE__->meta->make_immutable;
+    });
+    die $@ if $@;
+}
+
+print "Class::MOP: $Class::MOP::VERSION\n";
+print "Moose: $Moose::VERSION\n";
+print "Mouse: $Mouse::VERSION\n";
+print "---- new\n";
+cmpthese(
+    100000 => {
+        map { my $x = $_; $_ => sub { $x->new(n => 3) } }
+        map { "${_}One" }
+        qw/Moose Mouse/
+    }
+);
+
+print "---- new,set\n";
+cmpthese(
+    100000 => {
+        map { my $y = $_; $_ => sub { $y->new(n => 3)->n(5) } }
+        map { "${_}One" }
+        qw/Moose Mouse/
+    }
+);