[Omaha.pm] for loop quickie

Jay Hannah jay at jays.net
Tue May 23 03:14:17 PDT 2006


Daniel Linder wrote:
> Ok, Jay -- which one is faster?  I am pretty sure it's the second one, 
> but I'm interested in how much.
> 
> (Thought I'd ask since you're always benchmarking ...)

Looks like "after" is almost twice as efficient... Interesting how my wallclock secs bounced around. I guess my Mac was busy doing something else a couple times. :)

j


$ cat j.pl
use Benchmark qw(:all);

my @row = (a..z);
timethese(100000, {
   'Before' => sub { before() },
   'After'  => sub { after() }
});


sub before {
  for ($j = 0; $j < @row; $j++) {
    $row[$j] =~ s/[^ -~]//g;
    $row[$j] =~ s/\|/:/g;
  }
}

sub after {
  for (@row) {
    s/[^ -~]//g;
    s/\|/:/g;
  }
}

$ perl j.pl
Benchmark: timing 100000 iterations of After, Before...
     After:  2 wallclock secs ( 1.42 usr +  0.01 sys =  1.43 CPU) @ 69930.07/s (n=100000)
    Before:  2 wallclock secs ( 2.53 usr +  0.00 sys =  2.53 CPU) @ 39525.69/s (n=100000)
$ perl j.pl
Benchmark: timing 100000 iterations of After, Before...
     After:  1 wallclock secs ( 1.43 usr +  0.01 sys =  1.44 CPU) @ 69444.44/s (n=100000)
    Before:  3 wallclock secs ( 2.51 usr +  0.00 sys =  2.51 CPU) @ 39840.64/s (n=100000)
$ perl j.pl
Benchmark: timing 100000 iterations of After, Before...
     After:  1 wallclock secs ( 1.42 usr +  0.01 sys =  1.43 CPU) @ 69930.07/s (n=100000)
    Before:  1 wallclock secs ( 2.51 usr +  0.00 sys =  2.51 CPU) @ 39840.64/s (n=100000)
$ perl j.pl
Benchmark: timing 100000 iterations of After, Before...
     After:  1 wallclock secs ( 1.43 usr +  0.01 sys =  1.44 CPU) @ 69444.44/s (n=100000)
    Before:  1 wallclock secs ( 2.52 usr +  0.00 sys =  2.52 CPU) @ 39682.54/s (n=100000)



More information about the Omaha-pm mailing list