in reply to Re^2: When should I use map, for?
in thread When should I use map, for?
Have you tried it? It copies -and- modifies -both-.
my @elem = ( 1..20 ); my @e = map { $_ if (s/0/./g || 1) } @elem; print join( " ", @elem ), "\n"; __END__ 1 2 3 4 5 6 7 8 9 1. 11 12 13 14 15 16 17 18 19 2.
I understand -why- you put the logical path there. Just saying s/0/./g; $_; makes more sense than the if and or.
But you are quite right. It is moot. map is still slower, though arguably clearer in the $_ + 2 case. I don't know that map {} is ever an optimization.
I would use grep to filter records, or map to preprocess going into a sort. I find that makes sense to me coding-wise. I doubt that it is better speed-wise.
addendum:
Okay, here is a case where I think map is cleaner and (slightly) faster:
my @elem = map { int rand 1000 } 1..10000; sub map_s { my @mod_sorted = sort { $a <=> $b } map { $_ % 2**6 } @elem; } sub for_s { my @a; for ( @elem ) { push @a, $_ % 2**6; } my @mod_sorted = sort { $a <=> $b } @a; } __END__ Rate for map for 15.8/s -- -4% map 16.5/s 4% --
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: When should I use map, for?
by shemp (Deacon) on May 19, 2005 at 22:49 UTC | |
by fishbot_v2 (Chaplain) on May 19, 2005 at 22:58 UTC | |
by shemp (Deacon) on May 20, 2005 at 17:03 UTC |