【发布时间】:2011-10-03 09:16:19
【问题描述】:
我有这个程序,我必须在非常大的文本文件中搜索特定值及其行号,并且同一值可能会出现多次。
我尝试了一个简单的 C++ 程序,它逐行读取文本文件并使用 strstr 搜索值,但这需要很长的时间 gggggggggggggg
我也尝试使用 grep 使用系统命令,但仍然需要很多时间,不像以前那么长,但仍然太多时间。
我正在寻找一个可以用来加快搜索速度的库。 有什么帮助和建议吗?谢谢你:)
【问题讨论】:
-
如果您正确编写代码,您将不会获得更快的速度。一个文件中 10GB 的文本非常多。此外,由于线的长度彼此不相等,并且存在获得例如的风险。一行 1Gb,你应该分块阅读。 (例如,1024 个字节,或者只要你的字符串是,记得还要检查块之间的出现。(想象你读了 3 个字节,你需要在 heabcjabc /b>)
-
二进制读取+缓冲读取器或可管理大小的文件的内存映射段并在其上处理
标签: c++ unix search full-text-search large-files