#! /usr/local/bin/perl -w use strict; use Benchmark qw/cmpthese/; my %h; $h{ int(rand 1_000_000) } = rand 1000 for 1..10_000; sub min_by_sort { ( sort {$a <=> $b} keys %h )[0] } sub min_by_scan { my $min = undef; (not defined $min or $min > $_) and $min = $_ for keys %h; $min; } print "min_by_sort = ", min_by_sort(), "\n"; print "min_by_scan = ", min_by_scan(), "\n"; cmpthese( shift || -5, { min_by_sort => \&min_by_sort, min_by_scan => \&min_by_scan, } )