http://qs321.pair.com?node_id=587097


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?

Replies are listed 'Best First'.
Re^3: When should I use a dispatch table?
by BrowserUk (Patriarch) 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.