X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=benchmarks%2Flotsa-classes.pl;h=701cd25b0cfca80d3d518e7f7d78ffdb2e4454f4;hb=63f0e1ac4b6d03650b74760833420a361dad2e54;hp=8c846ccac72be49dbbd1cc82b6a61eabc5c335b3;hpb=66c87ce3bdc0e6caec3058561d278a7221d69f72;p=gitmo%2FMoose.git diff --git a/benchmarks/lotsa-classes.pl b/benchmarks/lotsa-classes.pl index 8c846cc..701cd25 100644 --- a/benchmarks/lotsa-classes.pl +++ b/benchmarks/lotsa-classes.pl @@ -4,9 +4,9 @@ use warnings FATAL => 'all'; use strict; use File::Temp; use Path::Class; -use String::TT qw(tt strip); my $number_of_classes = shift || 1500; +my $number_of_attributes = shift || 20; my $t = shift || File::Temp->newdir; my $tmp = dir($t); $tmp->rmtree; @@ -17,59 +17,34 @@ $tmp->mkpath; my %class_writer = ( 'Moose' => sub { my $name = shift; - return strip tt q{ - package [% name %]; - use Moose; - has 'x' => ( is => 'ro', isa => 'Str' ); - __PACKAGE__->meta->make_immutable; - 1; - __END__ - }; + my $attrs = join '', map { "has '$_' => ( is => 'ro', isa => 'Str' );\n" } @_; + return qq{package $name;\nuse Moose;\n$attrs\n1;\n__END__\n}; }, 'Moo' => sub { my $name = shift; - return strip tt q{ - package [% name %]; - use Moo; - has 'x' => ( is => 'ro', isa => 'Str' ); - 1; - __END__ - }; + my $attrs = join'', map { "has '$_' => ( is => 'ro', isa => 'Str' );\n" } @_; + return qq{package $name;\nuse Moo;\n$attrs\n1;\n__END__\n}; }, 'Mo' => sub { my $name = shift; - return strip tt q{ - package [% name %]; - use Mo; - has 'x' => ( is => 'ro', isa => 'Str' ); - 1; - __END__ - }; + my $attrs = join'', map { "has '$_' => ( is => 'ro', isa => 'Str' );\n" } @_; + return qq{package $name;\nuse Mo;\n$attrs\n1;\n__END__\n}; }, 'Mouse' => sub { my $name = shift; - return strip tt q{ - package [% name %]; - use Mouse; - has 'x' => ( is => 'ro', isa => 'Str' ); - __PACKAGE__->meta->make_immutable; - 1; - __END__ - }; + my $attrs = join'', map { "has '$_' => ( is => 'ro', isa => 'Str' );\n" } @_; + return qq{package $name;\nuse Mouse;\n$attrs\n1;\n__END__\n}; }, 'plain-package' => sub { my $name = shift; - return strip tt q{ - package [% name %]; - sub x {} - 1; - __END__ - }; + my $attrs = join'', map { "sub $_ {}\n" } @_; + return qq{package $name;\n$attrs\n1;\n__END__\n}; }, ); my $class_prefix = 'TmpClassThingy'; my %lib_map; +my @attribute_names = map { 'a' . $_ } 1 .. $number_of_attributes; for my $module (sort keys %class_writer) { my $lib = $tmp->subdir($module . '-lib'); $lib->mkpath; @@ -77,11 +52,11 @@ for my $module (sort keys %class_writer) { for my $n (1 .. $number_of_classes) { my $class_name = $class_prefix . $n; my $fh = $lib->file($class_name . '.pm')->openw; - $fh->say($class_writer{$module}->($class_name)) or die; + $fh->say($class_writer{$module}->($class_name, @attribute_names)) or die; $fh->close or die; - $all_fh->say("use $class_name;"); + $all_fh->say("use $class_name;") or die; } - $all_fh->say('1;'); + $all_fh->say('1;') or die; $all_fh->close or die; $lib_map{$module} = $lib; }