From: Ryutaro Amano Date: 2007-12-28T08:36:12+09:00 Subject: [ruby-list:44412] 1.9.0_文字列操作_速度 こんにちは、天野竜太郎です。 1.9.0が出ました。文字列操作などは速くならないという話を聞いて いましたが、1.8.6と比べると遅くなっている気がします。 遅くならないように書くコツはあるのでしょうか? http://www.post.japanpost.jp/zipcode/dl/kogaki.html 上記の都道府県一覧の「全国一括」ファイル (KEN_ALL.CSV、122388行)の","くぎりの index2,6,7,8部分(2が7桁郵便番号、6,7,8が住 所)を取り出して、郵便番号と住所の間には半角スペースを入れる (「日系ソフトウエア2008/02)という処理を以下のように書 くと、1.9.0の方が遅いです。 $ ruby -v ruby 1.8.6 (2007-09-24 patchlevel 111) [universal-darwin9.0] [08:16:09 ryutaro:~/myruby] $ ~/mylocal/bin/ruby -v ruby 1.9.0 (2007-12-25 revision 14709) [powerpc-darwin9.1.0] $ time ~/mylocal/bin/ruby youbin.rb real 0m11.871s user 0m10.604s sys 0m0.581s [07:59:29 ryutaro:~/myruby] $ time ruby youbin.rb real 0m8.509s user 0m7.348s sys 0m0.520s --------------------------------------------- open("KEN_ALL_RESULT", "w"){|f_out| open("KEN_ALL.CSV"){|f_in| while line = f_in.gets str = "" a = line.split(/,/).values_at(2,6..8).collect{|ele| ele.gsub(/"/, "")} str << a[0] << " " << a[1] << a[2] << a[3] << "\n" f_out.print str end } } ---------------------------------------------- 落としてきたファイルは、改行コードはLF、エンコーディングは UTF8にしてからプログラムにかけています。 Ryutaro Amano wn9r-amn@asahi-net.or.jp