Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: Perl Idioms Explained - keys %{{map{$_=>1}@list}}

by diotalevi (Canon)
on Aug 04, 2003 at 13:23 UTC ( #280666=note: print w/ replies, xml ) Need Help??


in reply to Perl Idioms Explained - keys %{{map{$_=>1}@list}}

Instead of using `=> 1`, it is valid and cheaper to use `=> undef`.


Comment on Re: Perl Idioms Explained - keys %{{map{$_=>1}@list}}
Re: Re: Perl Idioms Explained - keys %{{map{$_=>1}@list}}
by RMGir (Prior) on Aug 04, 2003 at 15:34 UTC
    I'm not disagreeing, but I am curious. Why is it cheaper? One less node allocated? (Oh, I think I see... PL_sv_undef gets reused instead of a new SV?)

    This sounds like a job for those perl internals diagrams someone did at some point... Wish my memory was better.
    --
    Mike

      Yes. Instead of one scalar of the value '1' for every key, you get to share the same undef value for all the keys and thus don't have to allocate tons of memory you aren't going to use anyway. So keys @{{map { $_, undef } @ary}} has the potential to be a lot cheaper than keys @{{map { $_, 1 } @ary}}. The "a lot" part is just related to how many values are in your array. You burn one extra value for every entry in @ary and I'm just suggesting that you don't have to do that in this case.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (12)
As of 2014-07-25 21:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (175 votes), past polls