Вы должны будете уменьшить использование iterator_to_array () и uasort (). И, в моем тестировании производительности, достаточно быстро.
Для вашего конкретного примера, наиболее компактный способ использования итераторов, который я знаю:
// get (recursively) files matching a pattern, each file as SplFileInfo object
$matches = new RegexIterator(
new RecursiveIteratorIterator(
new RecursiveDirectoryIterator('/path/to/files/')
),
'/(\.php|\.ini|\.xml)$/i'
);
$files = iterator_to_array($matches);
// sort them by name
uasort($files, create_function('$a,$b', 'return strnatcasecmp($a->getFilename(), $b->getFilename());'));