use strict; use warnings; use Benchmark 'cmpthese'; cmpthese -2, { 1 => sub { my ( $s, $x, $y ) = 0; # for ( 1 .. 1e6 ) { # doesn't matter, if written so for my $i ( 1 .. 1e6 ) { $x = rand; # suppose intermediate $y = rand; # variables are required $s += $x + $y; } $s }, 2 => sub { my ( $s, $i ) = 0; # for $i ( 1 .. 1e6 ) { # doesn't matter, neither for ( 1 .. 1e6 ) { my $x = rand; my $y = rand; $s += $x + $y; } $s }, }; __END__ Rate 2 1 2 6.69/s -- -42% 1 11.6/s 74% --