in reply to Improved regexp sought

I tested, and map is significantly faster than for or foreach at large numbers of iterations (about 13/8 as fast). I couldn't figure out how to put everything into one statement given the ?' format, but the following works fine:
use strict; use warnings; my $i; while (<DATA>) { chomp; chop; s/\?'/'/g; $i = 0; map { print '['.$i++."]$_\n" } split(/\+/); } __DATA__ 0010+2+O?'Reilly' 012+90+Penguin'

Replies are listed 'Best First'.
Re^2: Improved regexp sought
by revdiablo (Prior) on Oct 27, 2004 at 16:52 UTC
    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:

    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.

      For me, for is faster on one Perl, and slower on another. The lesson learned is that optimizations like this is version dependant and not something you should bother about when trying to speed up your program.

      Benchmark: running tp_for, tp_map for at least 2 CPU seconds... tp_for: 2 wallclock secs ( 1.81 usr + 0.24 sys = 2.05 CPU) @ 11 +155.46/s (n=22891) tp_map: 3 wallclock secs ( 1.96 usr + 0.23 sys = 2.19 CPU) @ 10 +615.60/s (n=23280) Rate tp_map tp_for tp_map 10616/s -- -5% tp_for 11155/s 5% -- This is perl, v5.8.0 built for MSWin32-x86-multi-thread
      Benchmark: running tp_for, tp_map for at least 2 CPU seconds... tp_for: 2 wallclock secs ( 2.02 usr + 0.28 sys = 2.30 CPU) @ 35 +695.65/s (n=82100) tp_map: 2 wallclock secs ( 1.80 usr + 0.30 sys = 2.10 CPU) @ 39 +710.48/s (n=83392) Rate tp_for tp_map tp_for 35696/s -- -10% tp_map 39710/s 11% -- This is perl, v5.8.4 built for i486-linux

      ihb

      See perltoc if you don't know which perldoc to read!
      Read argumentation in its context!