use Heap::Priority; my $n = 100000; my $start = time; my $h = new Heap::Priority; $h->add($_, $_%1000) for 1..$n; $h->pop for 1..$n; print "Did $n in ", time - $start, " seconds"; __DATA__ Did 100000 in 40 seconds