use Sort::Key::Top 'natpos'; use Benchmark qw(cmpthese); my @f = map rand, 0..1e7; my ($r1, $r2); cmpthese -1, { sort => sub { $r1 = (sort { $a <=> $b } @f)[@f/2] }, skt => sub { $r2 = natpos @f/2, @f } }; print "median $r1, $r2\n";