【发布时间】:2012-02-22 09:48:34
【问题描述】:
我想知道是否有任何提示可以让 grep 尽可能快。我有一个相当大的文本文件库,可以以最快的方式搜索。我将它们全部设为小写,这样我就可以摆脱-i 选项。这使搜索速度更快。
另外,我发现-F 和-P 模式比默认模式更快。当搜索字符串不是正则表达式(只是纯文本)时,我使用前者,如果涉及正则表达式,则使用后者。
有人有加速grep的经验吗?也许用一些特定的标志从头开始编译它(我在 Linux CentOS 上),以某种方式组织文件,或者以某种方式使搜索并行?
【问题讨论】:
-
这总是同一组文件吗?如果您发现自己使用
grep搜索相同的(大)文件集,也许是时候寻找正确索引它们的解决方案了(“最佳”解决方案将取决于这些文件的类型)。 -
是的,它是同一组文件。你认为像 lucene 这样的全文解决方案会提高性能吗?一般来说,搜索 2500 个文件(每个文件是一本文学书籍)大约需要 30/40 秒,总字数约为 2.5 亿字。
-
"...or maybe make the search parallel in some way?"听到这个消息我会非常兴奋。grep应该完全可以并行操作,但我怀疑搜索可能仍受 I/O 限制。 -
您是否尝试过使用
ack-grep? -
使用
ack-grep或更好的 Ag! geoff.greer.fm/2011/12/27/the-silver-searcher-better-than-ack