【发布时间】:2010-12-01 09:11:44
【问题描述】:
我想尽可能高效地将所有目录存储在一个巨大的驱动器上的内存中,并且还能够在给定完整路径的情况下检索一个目录。每个目录都有它的名称字段(不是完整路径)和一个指向它的父目录的指针和一个子目录列表。你觉得应该走哪条路?
在我看来,有几种方法:
a) 将每个目录的完整路径存储在字典中并进行简单查找。优点:速度快,缺点:每个完整路径字符串都占用了不必要和冗余的内存量
b) 仅将实际目录名称存储在字典中,其中包含具有该名称的所有目录的列表,然后检查匹配是否正确:优点:非常快,缺点:必须为每个目录存储一个列表或使用将列表或目录存储在字典中。
c) 跳过字典,从根开始遍历树并通过拆分路径找到匹配项。也许使用 PLINQ 来加快速度。优点:字典没有内存开销,缺点:可能比查找慢。
d) 其他一些我没想到的方式...
【问题讨论】:
-
你在优化速度/内存吗?
-
但是你为什么要这样做呢?是作业吗,如果是请适当标记。
-
比记忆更快,但最好不要过度记忆
-
您需要在线更新吗?您需要目录浏览,还是只是查找?
-
结构可能需要偶尔重建/更新/替换,但如果这意味着它可以在浏览和查找方面进行优化,它在内存中可能是相当静态的
标签: c# data-structures