http://qs321.pair.com?node_id=68206


in reply to Re: Re: string manipulation
in thread string manipulation

I recommend running the benchmark again using the actual functions.

In your referenced benchmark you're comparing:

$data =~ tr/a-z/A-Z/;
and
$data =~ s/(A-Za-z+)/uc($1)/ge;

The uc($1) is a little different than:
$outstring =~ s/-/_/g;

When I ran the actual benchmark I got the following results:

Run 1: (n=5000000)
Method One TR: 3 wallclock secs ( 3.00 usr + 0.00 sys = 3.00 CPU) @ 166666.67
Method Two S: 3 wallclock secs ( 3.05 usr + 0.00 sys = 3.05 CPU) @ 163934.43

Run 2: (n=5000000)
Method One TR: 2 wallclock secs ( 2.96 usr + 0.00 sys = 2.96 CPU) @ 168918.92
Method Two S: 3 wallclock secs ( 3.08 usr + 0.00 sys = 3.08 CPU) @ 162337.66

Run 3: (n=5000000)
Method One TR: 4 wallclock secs ( 2.97 usr + 0.00 sys = 2.97 CPU) @ 168350.17
Method Two S: 3 wallclock secs ( 3.08 usr + 0.00 sys = 3.08 CPU) @ 162337.66

Seems like they are pretty much equal. But, alas, I'm real new to this benchmark stuff and I could have some weird caching issue.

Even so without the eval of uc($1) this is certainly no 17 to 1 ratio as the referenced benchmark shows.

Hope this helps
Claude
p.s. Thanks to Desdinova for introducing me to the world of benchmarks.