Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^2: When should I use a dispatch table?

by Limbic~Region (Chancellor)
on Dec 01, 2006 at 01:14 UTC ( #587097=note: print w/ replies, xml ) Need Help??


in reply to Re: When should I use a dispatch table?
in thread When should I use a dispatch table?

BrowserUk,
Don't blame the hash lookup performance here.

I didn't. To quote myself from the very next sentence: The hash does have the overhead of looking up the key, dereferencing the value, and executing the code ref. I knew that subroutine overhead is expensive - I even wrote a node inquiring into optimizing them a few years ago: (Inline subs?).

I am glad you replied and allocated the majority of the performance hit to the correct culprit. Unfortunately, typical dispatch tables use code refs. I hear lots of good things about bleed perl so hopefully 5.10 will be released soon.

Cheers - L~R


Comment on Re^2: When should I use a dispatch table?
Re^3: When should I use a dispatch table?
by BrowserUk (Pope) on Dec 01, 2006 at 01:36 UTC

    I was trying to point out that "the overhead of looking up the key, dereferencing the value," is marginal relative to the overhead of "executing the code ref".

    Even that last phrase slightly conflates

    • the process of invoking the sub;
    • executing the code it contains.

    I realise that you know the difference, but your wording--combined with your use of "purported"--tended to imply that "looking up the key" was a significant factor. Which it isn't. I sought to demonstrate this.

    Unfortunately, typical dispatch tables use code refs.

    It wouldn't be a dispatch table if it didn't :). I agree, you cannot avoid the overhead of calling the subroutine.

    I had a couple of cracks at coding a 'macro processor'--really just a sub inliner a couple of years ago.one of them may even be posted here somewhere?--using source filters, but it was never very satisfactory.


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
    "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://587097]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (7)
As of 2014-09-18 21:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (124 votes), past polls