3 use warnings FATAL => 'all';
7 use String::TT qw(tt strip);
9 my $number_of_classes = shift || 1500;
10 my $t = shift || File::Temp->newdir;
14 (-d $tmp) or die "not a dir: $tmp";
23 has 'x' => ( is => 'ro', isa => 'Str' );
24 __PACKAGE__->meta->make_immutable;
34 has 'x' => ( is => 'ro', isa => 'Str' );
44 has 'x' => ( is => 'ro', isa => 'Str' );
54 has 'x' => ( is => 'ro', isa => 'Str' );
55 __PACKAGE__->meta->make_immutable;
60 'plain-package' => sub {
71 my $class_prefix = 'TmpClassThingy';
73 for my $module (sort keys %class_writer) {
74 my $lib = $tmp->subdir($module . '-lib');
76 my $all_fh = $lib->file('All.pm')->openw;
77 for my $n (1 .. $number_of_classes) {
78 my $class_name = $class_prefix . $n;
79 my $fh = $lib->file($class_name . '.pm')->openw;
80 $fh->say($class_writer{$module}->($class_name)) or die;
82 $all_fh->say("use $class_name;");
85 $all_fh->close or die;
86 $lib_map{$module} = $lib;
90 for my $module (sort keys %lib_map) {
91 my $lib = $lib_map{$module};
93 my $cmd = "time -p $^X -I$lib -MAll -e '1'";
94 `$cmd > /dev/null 2>&1`; # to cache