for ( my $i = $size; $i--; ) { ... }
for ( my $j = $i; $j--; ) { ... }
####
foreach my $i ( 0 .. $size-1 ) { ... }
foreach my $j ( $i+1 .. $size-1 ) { ... }
####
foreach my $i ( 0 .. $size-1 ) { ... }
foreach my $string2 { @{$arrayDocs}[ $i+1 .. $size-1 ] } {
# change references to '$arrayDocs->[$j]' to '$string2'
}
####
# s/iter orig backwards foreach
# orig 10.6 -- -45% -55%
# backwards 5.80 83% -- -18%
# foreach 4.75 123% 22% --
####
use Benchmark qw(cmpthese);
my $size = 5000;
my $orig = sub {
for (my $i = 0; $i < ($size - 1); $i++) {
for (my $j = $i + 1; $j < ($size - 1); $j++) {
}
}
};
my $backwards = sub {
for ( my $i = $size; $i--; ) {
for ( my $j = $i; $j--; ) {
}
}
};
my $foreach = sub {
foreach my $i ( 0 .. $size-1 ) {
foreach my $j ( $i+1 .. $size-1 ) {
}
}
};
cmpthese ( 10 , { orig => $orig, backwards => $backwards, foreach => $foreach } );