我的字符串是文件路径,例如s/14/11/13/15/n7ce49B_235_25ed2d70.jpg
;我的模式很简单,都喜欢n7ce49B_.+
。
我跑GNU grep 2.6.3
下的Debian 6.0.10对戴尔DL360G7服务器(我说出来,只是给这台机器性能比较的意义上)与15K硬盘,而这个命令:time LC_ALL=C grep -E -f path_to_patterns_file path_to_strings_file
只是无法完成-服务器交换太差。如果使用20k模式,则需要3个多小时。
在我看来,这是不合理的。
还可以使用以下方法测试和调整输入线和图案的数量:
xxd -p /dev/urandom | fold -sw 100 | head -n 1250 |
grep -Ef <(xxd -p /dev/urandom | fold -sw 10 | head -n 20000)
好吧,90k是我的原始输入大小,这使我的机器交换变得如此困难,以至于我不得不杀死该grep。然后,我尝试将其拆分为20k个文件,但仍然可以正常工作...但是,您说对我的描述不一致。
—
skaurus
请说明在期间服务器是否被加了税(执行其他一些资源匮乏的任务)
—
agc
grep
。
可以用复制
—
斯特凡Chazelas
xxd -p /dev/urandom | fold -sw 100 | head -n 1250 | grep -Ef <(xxd -p /dev/urandom | fold -sw 10 | head -n 20000)
。看来是花时间在编译正则表达式和分配大量内存上。使用-F
代替-E
,它是瞬时的。
对于事,而不是
—
斯特凡Chazelas
n7ce49B_.+
等同于n7ce49B_.
90k
,说明中有20K
样式