c# – 有效地在内存中存储和搜索目录树

我想将所有目录存储在一个巨大的驱动器上尽可能高效地存储在内存中,并且能够在给定完整路径的情况下检索目录.每个目录都有它的名称字段(不是它的完整路径)以及指向它的父目录和子目录列表的指针.您认为哪条路可走?

我认为有两种方法:

a)将完整路径存储到字典中的每个目录并执行简单查找.优点:快速,缺点:每个完整路径字符串占用不必要的冗余内存量

b)将实际目录名称存储在字典中,并列出具有该名称的所有目录,然后检查匹配项是否正确:优点:非常快,缺点:必须为每个目录存储列表或使用装箱来存储字典中的列表或目录.

c)跳过字典,从根遍历树并通过拆分路径找到匹配.也许使用PLINQ加快速度.优点:字典没有内存开销,缺点:可能比查找慢.

d)其他一些我没有想到的方式……

最佳答案 如果您可以将子目录存储为字典而不是列表(对于您想要所有子目录的情况,使用Values属性可以轻松完成),那么您可以逐步完成路径,每个步骤为O(1),因此从完整路径中找到目录的复杂性为O(n),其中n是路径中的步数,与系统中的目录数无关.

点赞