Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

Ovid (2709)

Ovid
  (email not shown publicly)
http://publius-ovidius.livejournal.com/
AOL IM: ovidperl (Add Buddy, Send Message)

Stuff with the Perl Foundation. A couple of patches in the Perl core. A few CPAN modules. That about sums it up.

Journal of Ovid (2709)

Thursday December 27, 2007
01:17 PM

Next on the chopping block: UNIVERSAL::isa

[ #35214 ]

Back from a fabulous Christmas holidays and I'm busy profiling some tests to find out why they're slow. Here are our top ten offenders:

time elapsed (wall):   1338.6896
time running program:  1063.1014  (79.41%)
time profiling (est.): 275.5731  (20.59%)
number of calls:       62524605
number of exceptions:  620

%Time    Sec.     #calls   sec/call  F  name
4.89   52.0217    49746   0.001046  ?  DBI::st::execute
4.78   50.8507  2166072   0.000023     Class::Accessor::Grouped::get_inherited
2.86   30.4032  6066183   0.000005     Class::Accessor::Grouped::get_simple
2.58   27.4112   290321   0.000094     DBIx::Class::ResultSet::_collapse_result
2.00   21.2111  1137080   0.000019     <anon>:...5//XML/XPath/XMLParser.pm:63
1.73   18.3833   975751   0.000019     <anon>:.../perl5//Test/XML/XPath.pm:45
1.58   16.8466   761923   0.000022     DBIx::Class::ResultSourceHandle::resolve
1.57   16.6434  1049788   0.000016     <anon>:...DBIx/Class/ResultSet.pm:2106
1.42   15.0791   328238   0.000046     XML::XPath::Node::ElementImpl::DESTROY
1.40   14.9275   565934   0.000026     XML::XPath::XMLParser::parse_char

Those may be tough to work around, but we've also found this:

grep UNIVERSAL::isa prof.out
0.99   10.5302   620280   0.000017     UNIVERSAL::isa::object_or_class
0.94   10.0405   631328   0.000016     UNIVERSAL::isa
0.63    6.6978   622348   0.000011     UNIVERSAL::isa::invocant_type
0.00    0.0133     2068   0.000006     UNIVERSAL::isa::reference
0.00    0.0000        1   0.000007     UNIVERSAL::isa::import

Killing off UNIVERSAL::isa is a quick win for a bit of gain. We've enough tests that we're confident this won't hurt us.

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.
  • If tis is perl 5.10.0, CAG, and many other things suffer from a bug in perl when assigning @_, like a %40-50 decrease in performance.

    That prompted me to work around the issue and go one step further, squeeze as much out of CAg as I can with my limited knowledge.

    Not released yet, but here's the numbers from last night:


    CURRENT VERSION:

    Benchmark: running get_foo, get_inherited_class, get_inherited_object, get_simple, set_foo, set_inherited_class, set_inherited_object, set_simple for at least 3 CPU seconds...