评论

收藏

[Linux] Python与sed,grep文本查找效率对比小测

服务系统 服务系统 发布于:2021-10-03 14:41 | 阅读数:203 | 评论:0

这篇文章主要针对python,sed与grep查找文本的效率做一个实验,方便以后选择使用什么工具,需要的朋友可以参考下
Gnu awk作者在FreeBSD邮件列表中回答”GNU grep为什么比BSD grep要快“,提到了用到了Boyer-Moore算法,虽然不知道是什么,但感觉很厉害的样子~我猜想grep有多快呢?

所以想比较下下python,sed与grep:

测试文本:20w行,21M大

python普通正则匹配:
#!/usr/bin/python3 
import re 
f=open('/tmp/test.txt') 
for line in f: 
match=re.findall('^This.*want',line) 
if match != []: 
print(match)

结果:
DSC0000.png

试下编译的正则试试:
#!/usr/bin/python3 
import re 
f=open('/tmp/test.txt') 
re_obj=re.compile('^This.*want') 
for line in f: 
match=re_obj.findall(line) 
if match != []: 
print(match)

结果快了1倍:
DSC0001.png


试试sed:
DSC0002.png

快了1个数量级!

最后试试grep:
DSC0003.png


果然grep是查找最专业的!

关注下面的标签,发现更多相似文章