Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

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]
[erix]: choroba I believe you ;)
[1nickt]: Corion I assume you are talking about Retry? Attempt doesn;t offer callbacks and has a much simpler interface. (Also written by someone I trust...)
[perldigious]: I train for long portaging/rowing trips by carrying my kayak to the river about a half mile from my house 2-3 times a week depending on weather... but due to a lingering winter, I haven't had long to train this year.

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (10)
As of 2017-05-24 12:58 GMT
Find Nodes?
    Voting Booth?