我有一个包含约170,000字左右的文件。在.NET中处理这个问题的最佳方法是什么?
将它加载到List keep in memory并搜索列表是否有意义。这个大小的列表是否会成为记忆中的问题?任何有关加载和搜索此类列表的建议都将受到赞赏。
谢谢,
答案 0 :(得分:2)
将它加载到List keep in memory并搜索列表是否有意义。这个大小的列表是否会成为记忆中的问题?
除非你的话很长,否则记忆不会成为问题。
如果您说的是标准拉丁字母表中的英语,那么记忆不会成为问题。
但你必须具体说明你的单词长度。如果你正在处理{A, C, G, T}
上的文字而这些文字恰好是DNA那么,是的,记忆将是一个问题。
有关加载和搜索此类列表的任何建议都将不胜感激。
你在做什么类型的搜索?您是在寻找存在还是在寻找最近的匹配(比方说,最接近的字母匹配)?如果存在,请使用HashSet<string>
。如果最接近字母匹配,我将从排序的List<string>
开始并进行二分搜索。但如果你的话很长,我可能会考虑像前缀树一样。
这最后一个问题的答案在很大程度上取决于你究竟在做什么。
答案 1 :(得分:1)
将它们加载到List<string>
,排序并使用BinarySearch
。
答案 2 :(得分:0)
将整个列表加载到内存中将是内存最密集的选项,但也是最快的选项。
如果您使用文件流,则由于连续IO而导致访问速度缓慢,因此您的固定内存开销很低。
这是您必须为您的应用程序做出的选择。
答案 3 :(得分:0)