Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
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 having an uproarious good time at the Monastery: (7)
As of 2014-10-31 05:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (214 votes), past polls