Я хочу хранить все каталоги на огромном диске как можно эффективнее в памяти, а также иметь возможность извлекать каталог, учитывая его полный путь. В каждом каталоге есть поля для имени (не полный путь) и указатель на его родительский элемент и список подкаталогов. Как вы думаете, какой путь?Сохранение и поиск дерева каталогов в памяти эффективно
Как я понимаю, что есть несколько способов:
а) хранить полные пути к каждой директории в словаре и сделать простой поиск. Плюсы: быстрая, Минусы: каждая строка полного пути занимает необработанный и избыточный объем памяти
b) Храните только фактическое имя каталога в словаре со списком всех каталогов с этим именем, затем проверьте соответствия, если оно правильно : Плюсы: довольно быстро, Минусы: нужно либо сохранить список для каждого каталога, либо использовать бокс для хранения списка или каталога в словаре.
c) Пропустите словарь, пересечь дерево из корня и найти совпадение путем разделения пути. Возможно, PLINQ, чтобы ускорить процесс. Плюсы: нет недостатка памяти со словарем, минусы: потенциально медленнее, чем поиск.
d) другим способом я не подумал ...
Вы оптимизируете скорость/память? – Dani 2010-12-01 09:16:23
Но почему вы хотите это сделать? Это домашнее задание, если да, пожалуйста, отметьте соответствующим образом. – TalentTuner 2010-12-01 09:17:25