[Bug 196836] perl-5.8.8-5 is 30X slower than perl-5.8.8-4

bugzilla at redhat.com bugzilla at redhat.com
Fri Jul 14 22:47:59 UTC 2006


Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug report.

Summary: perl-5.8.8-5 is 30X slower than perl-5.8.8-4


https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=196836





------- Additional Comments From jvdias at redhat.com  2006-07-14 18:39 EST -------
Created an attachment (id=132469)
 --> (https://bugzilla.redhat.com/bugzilla/attachment.cgi?id=132469&action=view)
Results of perlbench-0.93 when run for perl-5.8.8-5 and perl-5.8.8-4 on a dual
processor i386 FC-5 machine

The attached perlbench log shows that the performance of perl-5.8.8-4 compared
to perl-5.8.8-5 is virtually identical for common perl operations . Perlbench
is a standard benchmark test for perl.

Yes, I have duplicated the severe performance loss when running the WebGUI
t/i18n/label.t test.

Reblessing overloaded objects now incurs a performance penalty in 5.8.8-5+ : 
this is due to the fix for perlbug #34925 'overload and rebless':
   http://rt.perl.org/rt3/Ticket/Display.html?id=34925
The fix for this bug (change 27512) involves a 'brute force approach' to 
detect overloaded objects that are then reblessed; the performance penalty
is proportional to the number of active scalars in the perl program.

Testing 5.8.8-5 compiled without the 'perl-5.8.8-U27512.patch' applied
shows no performance loss when running the WebGUI t/i118n/label.t test
over 5.8.8-4 - the 27512 patch is definitely the cause.

Perlbug 34925 severely affects the CPAN DBI::Class module.

As reblessing an overloaded object is quite rare, the brute force approach
was deemed acceptable by the upstream perl maintainers, who have applied this 
overload and rebless detection mechanism to the current maintenance release
of perl.

In the upstream 'blead' perl 5.9.4, a fix with no adverse performance impact
was applied (change # 27506), but this introduces binary incompatibilities 
which impact  mod_perl; one cannot apply this fix to the 5.8.x releases without

introducing major binary incompatibilities, and I've not been able to see
an alternative fix (in 5.8.8, every SV_f* flag bit is already used - in 
5.9.4, they've changed the meaning of the flag bits and reserved one 
to flag the case of overload and rebless).

So, I think we'll have to accept the performance tradeoff for correct 
operation in the presence of overload and rebless, until perl-5.9.x 
is released as the stable version of perl-5.

-- 
Configure bugmail: https://bugzilla.redhat.com/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.




More information about the Fedora-perl-devel-list mailing list