in reply to Re^5: How to identify the package of a subroutine given only a reference to it
in thread How to identify the package of a subroutine given only a reference to it
My question wasn't very directional... I was wanting to know the relative performance of a blessed code ref vs a unblessed code ref
So I put together a little benchmark comparing:
Blessing the code ref does have a performance impact when using it as a code ref compared to an unblessed code ref. However it is cheap compared to calling a method on the object
Output:use strict; use warnings; use feature ":all"; use Benchmark qw<cmpthese>; my $count=$ARGV[0]//1; package SUB_TEST { sub new { bless sub {1}, __PACKAGE__} sub method { 1 } } my $obj=SUB_TEST->new(); my $sub=sub {1}; cmpthese($count, { blessed=>sub {$obj->()}, method=>sub{$obj->method()}, sub=>sub{$sub->()} } );
Rate method blessed sub method 18939394/s -- -30% -39% blessed 27173913/s 43% -- -12% sub 30864198/s 63% 14% --
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^7: How to identify the package of a subroutine given only a reference to it
by hv (Prior) on Feb 14, 2022 at 16:48 UTC | |
by drclaw (Acolyte) on Feb 19, 2022 at 04:37 UTC | |
by hv (Prior) on Feb 19, 2022 at 13:37 UTC | |
by drclaw (Acolyte) on Feb 20, 2022 at 00:15 UTC | |
|
Re^7: How to identify the package of a subroutine given only a reference to it
by LanX (Saint) on Feb 02, 2022 at 23:04 UTC |