in reply to Re^4: Splitting on escapable delimiter
in thread Splitting on escapable delimiter
which still rates rollahead as faster than unroll, but barely. Interesting that runs on different machines can produce a 15% change in relative performance. (I am running perl 5.8.6.)Benchmark: timing 100000 iterations of rollahead, unroll, unroll2... rollahead: 22.9776 wallclock secs (22.93 usr + 0.02 sys = 22.95 CPU) + @ 4357.30/s (n=100000) unroll: 23.0715 wallclock secs (23.03 usr + 0.02 sys = 23.05 CPU) + @ 4338.39/s (n=100000) unroll2: 22.3888 wallclock secs (22.35 usr + 0.03 sys = 22.38 CPU) + @ 4468.28/s (n=100000) Rate unroll rollahead unroll2 unroll 4338/s -- -0% -3% rollahead 4357/s 0% -- -2% unroll2 4468/s 3% 3% --
unroll2 is unroll with a more efficient regexp (one fewer alternation). That it is slightly faster suggests that the alternation is indeed slowing things down.
sub unroll2 { my @x = $_[0] =~ /(?:^|@)((?:#[#@]|[^#@])*)/g; for(@x){ $_ =~ s/##/#/g; $_ =~ s/#@/@/g; } @x }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^6: Splitting on escapable delimiter
by mobiusinversion (Beadle) on Mar 29, 2008 at 07:14 UTC |