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] }