At this point, I call 'not it'...but only because I really don't know
what in the hell is going on.

Two brand new fresh FreeBSD 6.2 installs. One with a a compiled (not
ports) Perl 5.8.8 and the other with a compiled 5.10.0.

The test case is simple set_inherited, sans C::A::G in the picture,
since the reporter noted set was slower as well (which BTW has no MRO
interaction):

test.pl
> use lib '.';
> use Foo;
> use Benchmark ':all';
> 
> my $f = bless {}, 'Foo';
> 
> timethese(0, {
>    set_inherited_class  => sub {Foo->set_inherited('bar', 'baz')},
>    set_inherited_object => sub {$f->set_inherited('bar', 'baz')}
> });


Foo.pm
> package Foo;
> use Scalar::Util qw/blessed reftype/;
> 
> sub set_inherited {
>     my ($self, $set, $val) = @_;
> 
>     if (blessed $self) {
>         if (reftype $self eq 'HASH') {
>             return $self->{$set} = $val;
>         } else {
>             croak('Cannot set inherited value on an object instance that is 
> not hash-based');
>         };
>     } else {
>         no strict 'refs';
> 
>         return ${$self.'::__cag_'.$set} = $val;
>     };
> }
> 
> 1;

The results are:

Perl 5.8.8 Machine:
> Benchmark: running set_inherited_class, set_inherited_object for at least 3 
> CPU seconds...
> set_inherited_class:  4 wallclock secs ( 3.16 usr +  0.00 sys =  3.16 CPU) @ 
> 575596.40/s (n=1821223)
> set_inherited_object:  3 wallclock secs ( 3.16 usr + -0.01 sys =  3.15 CPU) @ 
> 687794.82/s (n=2165479)
> [EMAIL PROTECTED] ~ $ 



Perl 5.10.0 Machine:
> Benchmark: running set_inherited_class, set_inherited_object for at least 3 
> CPU seconds...
> set_inherited_class:  3 wallclock secs ( 3.12 usr +  0.01 sys =  3.13 CPU) @ 
> 335388.09/s (n=1050708)
> set_inherited_object:  2 wallclock secs ( 3.15 usr +  0.00 sys =  3.15 CPU) @ 
> 412676.76/s (n=1299287)
> [EMAIL PROTECTED] ~ $ 

My to my shock, if I whittle down the code in set_inherited to just this:

> package Foo;
> use Scalar::Util qw/blessed reftype/;
> 
> sub set_inherited {
>     my ($self, $set, $val) = @_;
> 
> }
> 
> 1;


performance still seriouesly sucks:


5.8.8
> Benchmark: running set_inherited_class, set_inherited_object for at least 3 
> CPU seconds...
> set_inherited_class:  3 wallclock secs ( 3.08 usr +  0.02 sys =  3.09 CPU) @ 
> 1199923.07/s (n=3712262)
> set_inherited_object:  4 wallclock secs ( 3.27 usr +  0.00 sys =  3.27 CPU) @ 
> 1380589.06/s (n=4519272)
> [EMAIL PROTECTED] ~ $ 

5.10.0
> Benchmark: running set_inherited_class, set_inherited_object for at least 3 
> CPU seconds...
> set_inherited_class:  4 wallclock secs ( 3.09 usr +  0.01 sys =  3.10 CPU) @ 
> 536733.34/s (n=1664712)
> set_inherited_object:  4 wallclock secs ( 3.13 usr +  0.00 sys =  3.13 CPU) @ 
> 638055.42/s (n=1998908)
> [EMAIL PROTECTED] ~ $ 


A this point, I'm stumped.
-=Chris

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/[EMAIL PROTECTED]

Reply via email to