Gives me:#!/usr/bin/perl use warnings; use strict; use Benchmark qw(:all); my @bigarray; for(1..100000) { push @bigarray, "A randomish string for testing arrays with realisti +c data" ; } timethese(100, { while_shift => sub{ my @array = @bigarray; while (my $value=shift @array){} }, while_pop => sub{ my @array = @bigarray; while (my $value=pop @array){} }, for_each => sub{ my @array = @bigarray; foreach my $value (@array){} }, for_loop => sub{ my @array = @bigarray; for (my $i=0;$i<=@array;$i++) { my $value=$array[$i]; }}, });
$ perl a.pl Benchmark: timing 100 iterations of for_each, for_loop, while_pop, whi +le_shift... for_each: 4 wallclock secs ( 3.85 usr + 0.01 sys = 3.86 CPU) @ 25 +.91/s (n=100) for_loop: 7 wallclock secs ( 7.36 usr + 0.01 sys = 7.37 CPU) @ 13 +.57/s (n=100) while_pop: 5 wallclock secs ( 5.35 usr + 0.00 sys = 5.35 CPU) @ 18 +.69/s (n=100) while_shift: 5 wallclock secs ( 5.38 usr + 0.00 sys = 5.38 CPU) @ 1 +8.59/s (n=100)
In reply to Re: How to traverse an array as fast as possible?
by ciderpunx
in thread How to traverse an array as fast as possible?
by llancet
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |