Najlepszy sposób na iterację tablicy Perl

Jaka jest najlepsza implementacja (pod względem szybkości i wykorzystania pamięci) do iteracji przez tablicę Perla? Czy jest lepszy sposób? (@Array nie musi być zachowany).

Wdrożenie 1
foreach (@Array)
{
      SubRoutine($_);
}
Wdrożenie 2
while($Element=shift(@Array))
{
      SubRoutine($Element);
}
Wdrożenie 3
while(scalar(@Array) !=0)
{
      $Element=shift(@Array);
      SubRoutine($Element);
}
Wdrożenie 4
for my $i (0 .. $#Array)
{
      SubRoutine($Array[$i]);
}
Wdrożenie 5
map { SubRoutine($_) } @Array ;