in reply to Re: Re: Concatenation ... Strings
in thread Changing a character in the middle of a word (was: Concatenation ... Strings)
Which gave somewhat more expected results:use Benchmark; $string = "hello world I am a string of some sort of length" +; timethese(-1, { "match" => sub { ($char) = $string =~ /^.{4}(.)/;}, "unpack" => sub { ($char) = unpack("x4 A1", $string);}, "substr" => sub { ($char) = substr($string,4,1);}, "silly" => sub { my $string2 = $string; $char = chop $s +tring2 while length $string2 >= 4;}, #note the local });
Nevertheless, I'm suprised at the speed of silly. Can anybody explain why eating that string is faster than unpack, even if the string has some length?Benchmark: running match, silly, substr, unpack, each for at least 1 C +PU seconds... match: 3 wallclock secs ( 1.00 usr + 0.02 sys = 1.02 CPU) @ 18 +0382.35/s (n=183990) silly: 4 wallclock secs ( 1.15 usr + 0.09 sys = 1.24 CPU) @ 17 +341.13/s (n=21503) substr: 2 wallclock secs ( 1.00 usr + 0.05 sys = 1.05 CPU) @ 94 +4029.52/s (n=991231) unpack: 2 wallclock secs ( 1.02 usr + 0.06 sys = 1.08 CPU) @ 36 +2192.59/s (n=391168)
Cheers,
jeroen
"We are not alone"(FZ)
Update: Ouch! Fixed... silly is the slowest,
and the universe is back to normal :-)
The last benchmarks were recorded when my CPU hit
a load of 4.63, so they may be a little distorted ;-)
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re:{3} Concatenation ... Strings
by KM (Priest) on Apr 12, 2001 at 16:11 UTC |