in reply to Re^3: Sorting Hash By Large Number Values
in thread Sorting Hash By Large Number Values

Good move - that modification convinces me. Although in that case, the underlying algorithm we now have seems too simple to bother with the overheads of a heap module (update: because a hash is a special sort of heap!). The following algorithm uses the bare bones to deliver the top-n into %SortaHeapy, without using any sorting (code updated):
$NumOfPortsToGet = 10; local $loaded = 0; my %SortaHeapy = (); for my $key ( keys %Stats ) { ($key eq "UnauthOrigin") or SortaHeapy( $key ); } sub SortaHeapy{ my $key = shift; # if mini-heap not full just load it in if ( $loaded < $NumOfPortsToGet ) { $SortAHeapy{ $key } = $Stats{ $key }; $loaded++ return; } # otherwise do the degenerate heap sort/replace for my $hkey ( keys %SortaHeapy ) { if ( $SortaHeapy{ $hkey } < $Stats{ $key } ) { delete $SortaHeapy{ $hkey }; # replace SortaHeapy{ $hkey }; # but iterate the victim return } } }

One world, one people