我有一个 10 TB 的文件,其中包含来自多本书的单词,我正在尝试为一些不常见的字符串(无正则表达式)进行 grep。例如:grep "cappucino" filename
我正在尝试估计这需要多长时间。我并不是真的在寻找这是否是正确的方法。当我调用 grep 时,我想更多地了解幕后真正发生的事情。
如果我错了,请纠正我:
我使用读取速度大约为 200 MB/s 的机械硬盘,所以大约需要 1000 万/200 = 50000 秒 = 14 小时才能完成。这是一个准确的估计吗?
最佳答案
最简洁的答案是不。
更长的答案是:这取决于。
更长的答案是:grep 的性能取决于很多事情:
例如,我在 500MB/s SSD 上运行(至少制造商是这么说的)并且用非常短的模式(几个字符)grepp 一个 200MB 的文件给了我:
与
808320
命中real 0m1.734s
user 0m1.334s
sys 0m0.120s
与
0
命中:real 0m0.059s
user 0m0.046s
sys 0m0.016s
@Edit:简而言之,请阅读 Boyer-Moore :-)
@Edit2:要检查 grep 是如何工作的,您应该检查源代码,我在上面描述了一个非常通用的工作流程。
关于performance - 我可以期望 grep 处理 10 TB 文件多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25614893/