use strict;
use Benchmark qw(cmpthese);
my $module1 = 'Z';
my $module2 = 'Z::X';
cmpthese(
0,
{
evalSTR1 => sub {
eval "use $module1";
delete $INC{'Z.pm'}
},
evalSTR2 => sub {
eval "use $module2";
delete $INC{'Z/X.pm'};
},
req1 => sub {
(my $pm = $module1) =~ s.::./.g;
$pm .= '.pm';
eval { require $pm };
delete $INC{'Z.pm'}
},
req2 => sub {
(my $pm = $module2) =~ s.::./.g;
$pm .= '.pm';
eval { require $pm };
delete $INC{'Z/X.pm'}
},
}
);
####
Rate evalSTR2 evalSTR1 req2 req1
evalSTR2 2474/s -- -2% -40% -48%
evalSTR1 2538/s 3% -- -39% -47%
req2 4150/s 68% 64% -- -13%
req1 4779/s 93% 88% 15% --
####
Rate evalSTR1 evalSTR2 req2 req1
evalSTR1 2348/s -- -4% -41% -44%
evalSTR2 2438/s 4% -- -39% -41%
req2 3964/s 69% 63% -- -5%
req1 4158/s 77% 71% 5% --
####
Rate evalSTR2 evalSTR1 req2 req1
evalSTR2 14504/s -- -0% -94% -97%
evalSTR1 14516/s 0% -- -94% -97%
req2 262449/s 1709% 1708% -- -38%
req1 424285/s 2825% 2823% 62% --