sub AssembleByHash { my ($array_ref) = @_; my (%result); foreach my $row (@$array_ref) { $result{$row->[0]} = $row->[1]; } return \%result; } #### sub AssembleByArray { my ($array_ref) = @_; my (%result); %result = map { @$_ } @$array_ref; return \%result; } #### Benchmark: timing 10 iterations of AssembleByArray, AssembleByHash... AssembleByArray: 10 wallclock secs ( 9.64 usr + 0.04 sys = 9.68 CPU) @ 1.03/s (n=10) AssembleByHash: 1 wallclock secs ( 1.31 usr + 0.00 sys = 1.31 CPU) @ 7.63/s (n=10) Rate AssembleByArray AssembleByHash AssembleByArray 1.03/s -- -86% AssembleByHash 7.63/s 639% --