logo       

[ruby-list:42468] Re: 多量の正規表現との効率的なマッチのアイデアを、、: msg#00122

lang.ruby.japanese

Subject: [ruby-list:42468] Re: 多量の正規表現との効率的なマッチのアイデアを、、

From: しん <dezawa-eY1vtc/6GtbR7s880joybQ@xxxxxxxxxxxxxxxx>
Subject: [ruby-list:42467] Re: 多量の正規表現との効率的なマッチのアイデアを、、
Date: Fri, 23 Jun 2006 20:13:20 +0900

> ブロックを使うととつぜんrubyらしくなる。

Rubyの醍醐味です^^

> File.read("testdata") ここについて質問です。
>
> 巨大なファイルをこうやって読んでしまうと、メモリはどうなるのでしょう。
> 400Byte/行 10000行位のデータがあります。

この程度のファイルなら問題ないと思いますけど…
僕の場合数十MBくらいまでは一度に読み込んでしまいます。

どうしても心配ならば、こんなイテレータを定義して、

def gets_chomp_iter(filename)
open(filename) do |f|
while line = f.gets
yield(line.chomp)
end
end
end


File.read("testdata").split(/\n/).each do |line|

gets_chomp_iter("testdata") do |line|
に置き換えてみましょう。

「1行1行処理していく」というレベルで抽象化されているので、
そのまま置き換えがききます。

openはブロックを持てます。ブロックの実行が終わったときに自動でcloseされます!

yieldでブロックの実行にうつります。

# 名前がアレですが…

> 多分、2、3ケ月のうちに処理するデータが 1G位になりそうなので、、、
うおっ!
こうなると集計をincrementalに行うことを考えたほうがいいかもしれません。

--
rubikitch
http://www.rubyist.net/~rubikitch/




<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise