Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

(Ovid) Re: Improving the efficiency of this piece of code

by Ovid (Cardinal)
on Feb 25, 2001 at 22:22 UTC ( [id://60770]=note: print w/replies, xml ) Need Help??


in reply to Improving the efficiency of this piece of code

One thing I'd like to hear comment about: I've read that CGI.pm has to jump through so many hoops to export its functions that the OO interface is actually as fast OR FASTER than the functional interface. If anyone has more info about that, I'd love to hear more.

Cheers,
Ovid

Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.

  • Comment on (Ovid) Re: Improving the efficiency of this piece of code

Replies are listed 'Best First'.
Re: (Ovid) Re: Improving the efficiency of this piece of code
by MeowChow (Vicar) on Feb 26, 2001 at 01:11 UTC
    I don't believe that the overhead is in exporting the functions, but in the ability for the methods to "swing both ways".

    Every dual-nature (ie. functional and OO) method in CGI starts off by calling an internal sub, self_or_default, to determine the calling style. If the method was called as an export, self_or_default has to do the additional task of unshifting the default CGI object ($Q in the CGI.pm source) onto @_. This negates any performance gain from not having the method-call overhead:

    use strict; use warnings; use Benchmark qw(cmpthese); use CGI qw(:standard); my $q = new CGI; cmpthese (-3, { method => sub { $q->header; }, direct => sub { header; } }); ### RESULTS #### Rate direct method direct 14483/s -- -4% method 15106/s 4% --
    So it appears as if OO calling style on CGI is indeed faster in practice.
       MeowChow                                   
                   s aamecha.s a..a\u$&owag.print

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others cooling their heels in the Monastery: (4)
As of 2024-04-25 15:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found