in reply to shift v. indexing into an array
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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: shift v. indexing into an array
by 7stud (Deacon) on Nov 15, 2009 at 16:01 UTC | |
by bobr (Monk) on Nov 16, 2009 at 09:51 UTC | |
|
Re^2: shift v. indexing into an array
by dsheroh (Monsignor) on Nov 16, 2009 at 12:48 UTC |