Для небольшого массива я ничего не значу, но, поскольку он становится больше, быстрый и простой способ увеличить скорость обработки - воспользоваться индексацией ключа массива, которая составляет 1 мил. строки будут использовать около 40% времени. Пример:
// sorting array values
$numbers = array();
for($i = 0; $i < 1000000; ++$i)
{
$numbers[$i] = rand(1, 999999);
}
$start = microtime(true);
sort($numbers);
$res = array_slice($numbers, 0, 10, true);
echo microtime(true) - $start . "\n";
// 2.6612658500671
print_r($res);
unset($numbers, $res, $start);
// sorting array keys
$numbers = array();
for($i = 0; $i < 1000000; ++$i)
{
$numbers[rand(1, 999999)] = $i;
}
$start = microtime(true);
ksort($numbers);
$res = array_keys(array_slice($numbers, 0, 10, true));
echo microtime(true) - $start . "\n";
// 0.9651210308075
print_r($res);
Но если данные массива взяты из базы данных, возможно, быстрее всего просто отсортировать их там:
SELECT number_column FROM table_with_numbers ORDER BY number_column LIMIT 10