DirectoryInfo. GetFiles замедляются при использовании SearchOption. AllDirectories

Мне не нравятся множественные имена таблиц, потому что некоторые существительные на английском языке не исчисляемы (вода, суп, наличные деньги) или изменения значения при создании его исчисляемым (курица по сравнению с курицей; суть по сравнению с птицей). Мне также не нравится использовать сокращения для имени таблицы или имени столбца, потому что выполнение так добавляет дополнительный наклон к уже крутой кривой обучения.

Как ни странно, я мог бы сделать User исключение и назвать его Users из-за ПОЛЬЗОВАТЕЛЬ (Transac-SQL) , потому что мне также не нравится использовать скобки вокруг таблиц, если я не имею к.

мне также нравится называть все столбцы ID как Id, не ChickenId или ChickensId (что множественные парни делают об этом?).

Все это вызвано тем, что я не испытываю надлежащее уважение к системам баз данных, я просто повторно применяю знание с одним пони приема из соглашений о присвоении имен OO как Java из привычки и лени. Мне жаль, что не было лучшей поддержки IDE сложного SQL.

9
задан Richard Everett 29 July 2009 в 11:55
поделиться

1 ответ

Эти две функции печально известны своей производительностью. Причина в том, что GetFiles просматривает все дерево каталогов и создает массив из объектов FileInfo и только после этого возвращает результат вызывающей стороне. Построение указанного массива требует выделения большого количества памяти (я уверен, что они используют List внутри, но все же), поскольку количество записей не может быть известно заранее.

Если вам действительно нравится производительности, вы можете P / Invoke в FindFirstFile / FindNextFile / FindClose , абстрагировать их в IEnumerable и yield FileInfo по одному.

13
ответ дан 4 December 2019 в 14:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: