cmpthese -1, { shared => q[ my %h : shared = 1..10; ++$h{ 1 } for 1 .. 1e4 ], shared_locked_hv => q[ my %h:shared = 1 .. 10; do{ lock( %h ); ++$h{ 1 } } for 1 .. 1e4 ], non_shared => q[ my %h = 1 .. 10; ++$h{ 1 } for 1 .. 1e4 ], };; Rate shared_locked_hv shared non_shared shared_locked_hv 145/s -- -59% -60% shared 353/s 144% -- -1% non_shared 358/s 147% 1% --