Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^5: Why doesn't Perl provide %_ as the hash equivalent of @_ in subs? (ugly++)

by BrowserUk (Pope)
on Sep 27, 2013 at 10:53 UTC ( #1055964=note: print w/ replies, xml ) Need Help??


in reply to Re^4: Why doesn't Perl provide %_ as the hash equivalent of @_ in subs? (ugly++)
in thread Why doesn't Perl provide %_ as the hash equivalent of @_ in subs?

If it would make all function calls slower, then I agree with you that it wouldn't be worth it.

3 times slower...

sub withNames{ local %_ = @_; ++$_{$_} for keys %_; };; sub sansNames{ ++$_ for @_; };; cmpthese -1,{a=>q[ withNames( 1 .. $_*2 ) for 1..5 ], b=>q[ sansNames( + 1..$_ ) for 1 .. 5 ] };; Rate a b a 32135/s -- -75% b 127549/s 297% --
hash could be built when first used... Would that not be technically feasible?

Feasible, yes.

A good idea? Sounds like a recipe for disaster to me.

And all to save you adding local %_ = @_; where you want it. Worth the effort? Absolutely not.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.


Comment on Re^5: Why doesn't Perl provide %_ as the hash equivalent of @_ in subs? (ugly++)
Select or Download Code
Re^6: Why doesn't Perl provide %_ as the hash equivalent of @_ in subs? (ugly++)
by Anonymous Monk on Sep 28, 2013 at 06:12 UTC

    sub withNames{ local %_ = @_; ++$_{$_} for keys %_; };;

    Try  ++$_ for values %_;

    :P lol

    Yeah, local %_=@_; is not hard to type :)

      Try ++$_ for values %_;

      That improves things:

      sub sansNames{ ++$_ for @_; };; sub withNames{ local %_ = @_; ++$_ for values %_; };; cmpthese -1,{ a=>q[ withNames( 1 .. $_*2 ) for 1..5 ], b=>q[ sansNames( 1..$_ ) for 1 .. 5 ] };; Rate a b a 35072/s -- -71% b 122333/s 249% --

      Though ... a benchmark of named parameters that doesn't use the names to access the parameters ... :)


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (5)
As of 2014-12-18 00:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (41 votes), past polls