Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: Two simple code style advice questions

by davido (Archbishop)
on Jan 16, 2013 at 19:05 UTC ( #1013637=note: print w/ replies, xml ) Need Help??


in reply to Two simple code style advice questions

#1: Readability is better for the map version, in my opinion, though the 'x' operator version isn't bad, and is measurably faster in the uncommon case where such considerations actually matter. ;)

use Benchmark qw( cmpthese ); @array = ( 'aaa' .. 'zzz' ); cmpthese ( -3, { mapped => q{my %hash = map{$_=>0} @array}, opped => q{my %hash; @hash{@array} = (0) x @array}, } ); __END__ Rate mapped opped mapped 65.9/s -- -45% opped 120/s 82% --

But except for the odd case of doing such a transform inside of a tight loop, the benchmark is probably totally inconsequential when weighed against the legibility issues.

#2: I prefer the ternary operator. Everyone knows what is happening here. The 'x' operator version is a nifty contortion. And it would be silly to bother thinking in terms of processing time in such a trivial snippet; I suspect the result would be within the margin of error.

So for me, map, and ternary. I would love to favor the slice approach, but it takes a little more cognition to mentally evaluate.


Dave


Comment on Re: Two simple code style advice questions
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1013637]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (4)
As of 2015-07-05 18:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (67 votes), past polls