Python与sed,grep文本查找效率小测

Gnu awk作者在FreeBSD邮件列表中回答GNU grep为什么比BSD grep要快,提到了用到了Boyer-Moore算法,虽然不知道是什么,但感觉很厉害的样子~我猜想grep有多快呢?
所以想比较下下python,sed与grep:

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

1.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)

花了1.26秒

2.编译的正则试试:

#!/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)

花了0.54秒,比之前结果快了1倍:

3.试试sed:
花了0.07秒
比上面Python脚本快了差不多1个数量级!

4.最后试试grep:
只花了0.03秒

果然grep查找是最专业的!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • sed与awk实例 文本间隔 在每一行后面增加一空行 将原来的所有空行删除并在每一行后面增加一空行。这样在输出的文...
    stuha阅读 5,931评论 0 20
  • 本文承接之前写的三十分钟学会AWK一文,在学习完AWK之后,趁热打铁又学习了一下SED,不得不说这两个工具真的堪称...
    mylxsw阅读 9,874评论 3 74
  • 一、异同对比选择1、Python和ruby的相同点: * 都强调语法简单,都具有更一般的表达方式。python是缩...
    沃伦盖茨阅读 9,646评论 2 24
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,353评论 2 33
  • 字段选择的基本规则 更小的通常更好,同类型字段,尽量选择占用更小的存储空间的,更小的字段通常速度更快,因为占用更少...
    code_nerd阅读 3,666评论 0 0

友情链接更多精彩内容