in reply to Re^5: Error handling in chained method calls
in thread Error handling in chained method calls
An idealized benchmark shows only a 25% gain by memoizing, so I agree, it doesn't worth it.
Rate classic memoized classic 75415/s -- -19% memoized 93110/s 23% --
use strict; my $obj={}; bless $obj,"Class"; sub classic { $obj->meth0->meth1->meth2->meth3->meth4->meth5->meth6->meth7->meth8- +>meth9; } my $ref0=$obj->can("meth0"); my $ref1=$obj->can("meth1"); my $ref2=$obj->can("meth2"); my $ref3=$obj->can("meth3"); my $ref4=$obj->can("meth4"); my $ref5=$obj->can("meth5"); my $ref6=$obj->can("meth6"); my $ref7=$obj->can("meth7"); my $ref8=$obj->can("meth8"); my $ref9=$obj->can("meth9"); sub memoized { $obj->$ref0->$ref1->$ref2->$ref3->$ref4->$ref5->$ref6->$ref7->$ref8- +>$ref9; } use Benchmark qw/cmpthese/; cmpthese(1E6, { classic => \&classic, memoized => \&memoized, }); package Class; sub meth0 { $_[0] } sub meth1 { $_[0] } sub meth2 { $_[0] } sub meth3 { $_[0] } sub meth4 { $_[0] } sub meth5 { $_[0] } sub meth6 { $_[0] } sub meth7 { $_[0] } sub meth8 { $_[0] } sub meth9 { $_[0] }
Cheers Rolf
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^7: Error handling in chained method calls
by BrowserUk (Patriarch) on Oct 25, 2010 at 03:08 UTC | |
by stvn (Monsignor) on Oct 25, 2010 at 16:02 UTC | |
by BrowserUk (Patriarch) on Oct 25, 2010 at 16:37 UTC | |
by stvn (Monsignor) on Oct 25, 2010 at 18:09 UTC | |
by BrowserUk (Patriarch) on Oct 25, 2010 at 19:04 UTC | |
by LanX (Saint) on Oct 25, 2010 at 11:06 UTC | |
by BrowserUk (Patriarch) on Oct 25, 2010 at 11:22 UTC | |
by LanX (Saint) on Oct 25, 2010 at 11:33 UTC | |
by BrowserUk (Patriarch) on Oct 25, 2010 at 12:25 UTC |