http://www.perlmonks.org?node_id=1064845


in reply to Re^3: Faster Hash Slices
in thread Faster Hash Slices

The same seems to be true for package variables ( scalar holding hashref and hash in the symbol table), and my variable lookup seems to be faster:

our $ref = { 1 .. 1e6 }; our %h = 1 .. 1e6; { my $_ref = { 1 .. 1e6 }; my %_h = 1 .. 1e6; cmpthese -5,{ a => sub{ exists $_ref->{$_} and 1 for 1 .. 1e6; }, b => sub{ exists $_h{$_} and 1 for 1 .. 1e6; }, c => sub{ exists $ref->{$_} and 1 for 1 .. 1e6; }, d => sub{ exists $h{$_} and 1 for 1 .. 1e6; } } };; Rate a c d b a 3.31/s -- -2% -3% -4% c 3.38/s 2% -- -0% -2% d 3.39/s 3% 0% -- -2% b 3.45/s 4% 2% 2% --

Thanks for measurement and correction.

perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'