查看: 316|回覆: 0

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

[複製鏈接]

12

主題

0

回帖

36

積分

技术1级

金币
24
閲讀權限
10
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-9-18
QQ
發表於 2010-7-12 07:38:06 | 顯示全部樓層 |閲讀模式
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)


结果:
试下编译的正则试试:


复制代码代码如下:
#!/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倍:

试试sed:
快了1个数量级!

最后试试grep:

果然grep是查找最专业的!
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部