Rate w=1 w=0 w=1 3003/ms -- -1% w=0 3032/ms 1% -- Rate w=1 w=0 w=1 3002/ms -- -0% w=0 3010/ms 0% -- #### use strict; use warnings; use Benchmark qw( cmpthese ); my $OUTER = $ARGV[0] || -3; my $INNER = $ARGV[1] || 1000; # ---------------------------------------- my %tests = ( 'w=1' => <<'__EOI__', use warnings; $arg .= $arg; __EOI__ 'w=0' => <<'__EOI__', no warnings; $arg .= $arg; __EOI__ ); # ---------------------------------------- my %bench = map { $_ => "use strict; use warnings; our \$arg; for (1..$INNER) { $tests{$_}; } " } keys %tests; { local our $arg = ''; cmpthese($OUTER, \%bench); print("\n"); print("Multiply by $INNER to get real rate.\n"); } #### Rate sr=0 sr=1 sr=0 2751/ms -- -0% sr=1 2759/ms 0% -- Rate sr=1 sr=0 sr=1 2735/ms -- -1% sr=0 2754/ms 1% -- #### use strict; use warnings; use Benchmark qw( cmpthese ); my $OUTER = $ARGV[0] || -3; my $INNER = $ARGV[1] || 1000; # ---------------------------------------- my %tests = ( 'sr=1' => <<'__EOI__', use strict; $arg .= $$ref; __EOI__ 'sr=0' => <<'__EOI__', no strict; $arg .= $$ref; __EOI__ ); # ---------------------------------------- my %bench = map { $_ => "use strict; use warnings; our \$arg; our \$ref; for (1..$INNER) { $tests{$_}; } " } keys %tests; { local our $arg = ''; local our $ref = \$arg; cmpthese($OUTER, \%bench); print("\n"); print("Multiply by $INNER to get real rate.\n"); }