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'
|