Несколько итераций в файловой структуре (C #) - PullRequest
0 голосов
/ 31 августа 2011

Я пишу программу, которая многократно повторяет файловую систему, используя простые циклы и рекурсию.

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

Есть ли способ оптимизировать этот процесс?Может быть, хотя бы один раз повторить, сохранить всю релевантную информацию в коллекции и затем сослаться на коллекцию, когда мне нужно?

Я знаю, что могу кешировать свои результаты таким образом, но я абсолютно не знаю, как это сделать.it.

Редактировать:

Существует три основных вида информации, которые я пытаюсь получить из данного каталога:

  • Размер каталога (суммаразмера каждого файла в этом каталоге)
  • Количество файлов в каталоге
  • Количество папок в каталоге

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

Мой вывод в основном представляет собой электронную таблицу, которая выглядит следующим образом:

Program Output

Ответы [ 2 ]

1 голос
/ 31 августа 2011

Для повышения производительности вы можете получить прямой доступ к основной таблице файлов (MFT) файловой системы NTFS.На социальном форуме MSDN есть отличный пример кода.Кажется, что доступ к MFT примерно в 10 раз быстрее, чем перечисление файловой системы с использованием файла FindFirst / FindNext.

Надеюсь, это поможет.

1 голос
/ 31 августа 2011

Да, все, что вы можете сделать для минимизации операций ввода-вывода с жесткого диска, улучшит производительность. Я также предложил бы установить секундомер и измерить время, которое требуется, чтобы вы могли понять, как ваши улучшения влияют на скорость.

...