For 1) it shows shift is slightly faster (it actually just moves pointer to start of the array, no moving occur).use Benchmark qw(cmpthese); use 5.010; cmpthese(-2, { shift => sub { my @array = (1..10)x10000; my $item = shift @array; }, index => sub { my @array = (1..10)x10000; my $item = $array[0]; }, }); cmpthese(-2, { inside => sub { my $x = 0; while ($x < 5) { my $val = $x + 2; #repeatedly declaring a new variable? say $val; $x++; } }, outside => sub { my ($x, $val); $x = 0; while ($x < 5) { $val = $x + 2; #same old variable every time say $val; $x++; } }, });
For 2) after filtering all printed output it seems declaring my inside loop makes it slightly slower. I would say inside declaration is cleaner and speedup is not worth avoiding it.Rate index shift index 62.6/s -- -1% shift 63.1/s 1% --
All measured on Activestate perl 5.10 on Win32 ... YMMVRate inside outside inside 132994/s -- -9% outside 146050/s 10% --
-- regards, Roman
In reply to Re: shift v. indexing into an array
by bobr
in thread shift v. indexing into an array
by 7stud
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |