This is perl, v5.8.8 built for i386-linux-thread-multi
Rate for_loop1 for_loop2 foreach_loop2 foreach_loop1 for_loop3 for_loop4
for_loop1 3463/s -- -24% -51% -51% -52% -52%
for_loop2 4532/s 31% -- -36% -36% -37% -38%
foreach_loop2 7055/s 104% 56% -- -1% -2% -3%
foreach_loop1 7135/s 106% 57% 1% -- -1% -2%
for_loop3 7190/s 108% 59% 2% 1% -- -1%
for_loop4 7258/s 110% 60% 3% 2% 1% --
#!/usr/bin/perl
use warnings;
use strict;
use Benchmark qw/cmpthese/;
my @hoge = ( 1..1000);
cmpthese(-5, {
for_loop1 => sub {
my $total = 0;
for ( my $i = 0 ; $i < scalar @hoge ; $i++ ) {
$total+=$hoge[$i];
}
},
for_loop2 => sub {
my $total = 0;
my $cnt = 0;
for(@hoge ) {
$total+=$hoge[$cnt];
$cnt++;
}
},
for_loop3 => sub {
my $total = 0;
for (@hoge ) {
$total+=$_;
}
},
for_loop4 => sub {
my $total = 0;
for my $i (@hoge ) {
$total+=$i;
}
},
foreach_loop1 => sub {
my $total = 0;
foreach ( @hoge ) {
$total+=$_;
}
},
foreach_loop2 => sub {
my $total = 0;
foreach my $i ( @hoge ) {
$total+=$i;
}
},
});