我有一个简单的文本文件,大约150MB。我的代码将读取每一行,如果它匹配某些正则表达式,它将被写入输出文件。 但是现在,它只是需要很长的时间通过所有的文件做线(几分钟)的迭代像用Ruby解析大文件的最快方法
File.open(filename).each do |line|
# do some stuff
end
我知道它的通过是该文件的行循环需要一段时间,因为即使我对“#某些东西”中的数据什么都不做,仍然需要很长时间。
我知道一些unix程序可以像这样几乎立即解析大文件(如grep),所以我想知道为什么ruby(MRI 1.9)花费这么长时间来读取文件,并且有一些方法可以使它更快?
你有没有考虑过使用'sed'? – 2011-05-10 20:29:37
@奥斯汀我想在纯红宝石中做到这一点 – 2011-05-10 20:47:53
我不能重现这一点。通过150MB文件迭代在这里需要一秒钟。肯定比grep慢,但不是你描述的程度。该文件可能有很长的路线?在这种情况下,通过大块而不是线条阅读可能会有所帮助(如果完全可以用你想做的事情来做)。 – sepp2k 2011-05-10 20:52:04