den groessten Wert eines hashes bekommst du schneller heraus mit
use List::Util qw(max);
my $max = max(values %hash);
da du nur den groessten Wert brauchst und keine sortierte Liste, ist die sortierung unnoetig.
um zu ueberpruefen, ob ein hashschluessel existiert, ist
unless (exists $hash{$_}) {
meistens besser, weil da gar nicht auf den wert zugegriffen werden braucht.
Aber das ist alles nur Kleinkram; eine signifikaten leistungssteigerung bekommst du wohl nur durch einen besseren algorithmus und/oder besser angepasste datenstrukturen.