in reply to Re: Improved regexp sought
in thread Improved regexp sought
I tested, and map is significantly faster than for or foreach at large numbers of iterations
I'm sorry, I know it's off-topic, but I'd really like to see the Benchmarks to back this statement up. It's not that I don't believe you, just that it would be really surprising to me if it were true.
Update: well, I am indeed surprised. Here's a benchmark I cooked up:
#!/usr/bin/perl use strict; use warnings; use Benchmark qw(cmpthese timethese); sub tp_map { my $i; my $pos = tell DATA; while (<DATA>) { chomp; chop; s/\?'/'/g; $i = 0; map { '['.$i++."]$_\n" } split(/\+/); } seek DATA, $pos, 0; } sub tp_for { my $i; my $pos = tell DATA; while (<DATA>) { chomp; chop; s/\?'/'/g; $i = 0; '['.$i++."]$_\n" for split(/\+/); } seek DATA, $pos, 0; } cmpthese timethese(-2, { tp_map => \&tp_map, tp_for => \&tp_for, }); __DATA__ 0010+2+O?'Reilly' 012+90+Penguin'
And here are the results:
Benchmark: running tp_for, tp_map for at least 2 CPU seconds... tp_for: 2 wallclock secs ( 1.92 usr + 0.18 sys = 2.10 CPU) @ 48 +185.71/s (n=101190) tp_map: 2 wallclock secs ( 1.90 usr + 0.17 sys = 2.07 CPU) @ 52 +882.61/s (n=109467) Rate tp_for tp_map tp_for 48186/s -- -9% tp_map 52883/s 10% --
Which shows that map is indeed faster for something like this. Of course, the rates for both are still quite high, and actually choosing between map and for based on speed seems silly, but I'm still surprised.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Improved regexp sought
by ihb (Deacon) on Oct 28, 2004 at 08:47 UTC |