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% --