Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

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.


Log In?

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

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (3)
As of 2016-10-27 02:33 GMT
Find Nodes?
    Voting Booth?
    How many different varieties (color, size, etc) of socks do you have in your sock drawer?

    Results (352 votes). Check out past polls.