【发布时间】:2017-07-07 03:20:57
【问题描述】:
我正在大文本文件中搜索匹配项,但我发现它太慢了。这是文件结构:
word1 5752
word2 96332
word3 137
我正在尝试匹配第一列中的文本,并且我想提取第二列中的值。列由 \t 分隔,大约有 1000 万行。使用不同的词多次搜索该文件。哪种搜索方法的时间效率最高?
编辑:该文件为 129 Mb,至少会被搜索数千次。 EDIT2:文件按字母顺序排序,只有当它们具有不同的大写字母时,单词才能出现多次,例如:Word WORD word WOrd 将都是不同的条目。
【问题讨论】:
-
您如何搜索,如何加载数据?例如,如果您将整个文件加载到内存中,那么这可能是性能不佳的原因。或者,使用不同的算法可能会更好,您可以在再次阅读之前搜索每行的不同单词吗?
-
根据您搜索数据的次数,您可以将整个文件加载到内存中并将其转换为字典。虽然这可能会消耗一些内存。
-
"什么搜索方法的时间效率最好?" — “这取决于” — 这取决于您的机器有多少内存、单词的长度、
word1是否有可能在文件中有多个实例,其他我忘记提及的事情。总而言之,我会接受voidpointercast 的建议(现在已升级为answer),所有内容都在字典和测试中...... -
“大”有多大?
-
当你做测试时,记得测试
fgrep—fgrep将 PATTERN 解释为固定字符串列表(而不是正则表达式),用换行符分隔,其中任何一个都是匹配。
标签: python performance search