首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ruby函数比grep快

Ruby函数比grep快
EN

Stack Overflow用户
提问于 2014-05-09 23:03:58
回答 1查看 378关注 0票数 1

最近我测试了一个小的Ruby脚本,以便在一个大的g-zf文件中输出包含特定匹配模式的行,这时我决定将(zf)grep的速度与我的脚本进行比较。我可能过于简单化了一些东西,但据我所知,我的脚本似乎比类似的grep函数运行得快得多。

我正在处理大约800MB的g压缩XML文件,我的典型grep函数如下所示:

代码语言:javascript
运行
复制
zfgrep "expression-to-match" file_name.xml.gz

我正在寻找一个特定的字符串值,它只在文件中出现一次,这通常需要6-7分钟才能在我的2010年中期MacBook专业版上完成。我正在与这个脚本进行比较:

代码语言:javascript
运行
复制
require 'zlib'

expr, file = ARGV[0], ARGV[1]

Zlib::GzipReader.open(file) { |gz| 
    gz.each { |line| 
        puts line if line[expr] 
    } 
}

我使用类似的语法来运行脚本:

代码语言:javascript
运行
复制
ruby script.rb "expression-to-match" file_name.xml.gz

Ruby脚本大约在40-50秒内运行。我对运行时优化不是很了解,所以我想知道为什么Ruby进程在我的机器上要快得多。显然,在可供使用的选项方面,它远不如grep灵活,但就我所做的工作而言,我并不真正需要这种灵活性。

EN

回答 1

Stack Overflow用户

发布于 2014-05-10 06:15:47

正如在上面的注释中所讨论的,您的脚本不是执行正则表达式测试,而是执行简单的子字符串搜索。

为了测试类似的功能,您需要将脚本更改为类似的代码:

代码语言:javascript
运行
复制
expr, file = Regexp.new(ARGV[0]), ARGV[1]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23567945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档