use Benchmark qw(timethese); use constant VALUE => 5000; my %hash = ( 1..VALUE); timethese(1_000_000 / VALUE, { 'reverse' => sub { my %values = reverse %hash; }, 'map_values' => sub { my %values = map {$_ => undef} values %hash; } });