in reply to (Ovid) Re: Improving the efficiency of this piece of code
in thread Improving the efficiency of this piece of code

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