Краткий ответ:
Если этот код функционально корректен для вашего проекта, и вы не доказали, что это проблема с профилировщиком, не изменяйте его. Продолжайте использовать функционально правильное решение, пока не докажете, что оно медленное.
Длинный ответ:
Насколько быстрым или медленным является этот конкретный фрагмент кода, зависит от много факторов. Многие из которых будут зависеть от конкретной машины, на которой вы работаете (например, скорость жесткого диска). Глядя на код, который включает файловую систему и ничего более, очень трудно сказать «х быстрее, чем у» с какой-либо степенью уверенности.
В этом случае я могу прокомментировать только одну вещь. Тип возвращаемого значения этого метода - массив значений FileInfo. Массивам требуется непрерывная память, а очень большие массивы могут вызвать проблемы фрагментации в вашей куче. Если у вас есть чрезвычайно большие каталоги, которые вы читаете, это может привести к фрагментации кучи и косвенным проблемам с производительностью.
Если это окажется проблемой, тогда вы можете вызвать PInvoke в FindFirstFile / FindNextFile и получать их по одному за раз. Результат будет, вероятно, функционально медленнее в циклах ЦП, но будет иметь меньшую нагрузку на память.
Но я должен подчеркнуть, что вы должны доказать, что это проблемы, прежде чем исправить их.