ランプの中身(Ruby on Railsのシステム開発)
ランプの中身(Ruby on Railsのシステム開発)では、株式会社ケイビーエムジェイのRuby on Railsエンジニアが蓄積したノウハウを公開しています。Ruby on Railに関する技術解説や実践的なノウハウなど、開発現場の技術に則したコンテンツを随時追加していきます。 初心者の方でもわかりやすい技術解説を心がけています。リクエスト、ご質問も受け付けいますので、ご気軽にコメントを記述して下さい。

< railroadを用いたER図作成 | メイン | rubyの便利ツールirbをカスタマイズ... >

ワイYの中身(Ruby
2008.02.12

Ruby標準csv遅い


こんにちは、ワイYです。
今回は、Rubyの標準CSVはどの程度遅いのか、FasterCSVというRubyプラグインを用いて検証してみました。

検証前の準備

・RubyプラグインFasterCSVをgemを用いてインストールする。
gem install fastercsv
・検査データとして郵便局のHPから郵便番号CSVを取得する。

 

検証方法

Ruby標準のbenchmarkモジュールを使って、Ruby標準CSVとRubyプラグインFasterCSVにそれぞれ郵便番号CSVを読み取らせて比較する。

検証環境

OS: Windows XP

CPU: Core 2 Duo 2.4GHz

MEMORY: 3GB

Ruby v1.8.6

fastercsv v1.2.3



プラグインFasterCSVの使い方

require 'rubygems'
require 'fastercsv'
#CSVファイルを読み込み一行ずつ処理をする
FasterCSV.foreach("csvファイルパス指定"){ |csv|
p row #=>配列
}


検証に用いたコード

検証には、ハッシュのキーを郵便番号、値を住所を挿入するようなプログラムにしました。
require 'rubygems'
require 'benchmark'
require 'csv'
require 'fastercsv'
$KCODE='sjis'

Benchmark.bm(15) do |x|
 #FasterCSV
 x.report(" FasterCSV") do
   hash = {}
   FasterCSV.foreach("KEN_ALL.CSV"){ |row|
     hash[ row[2] ] = row[6] + row[7] + row[8]
   }
 end

 #ruby標準CSV
  x.report("CSV") do
    hash = {}
    CSV.foreach("KEN_ALL.CSV"){ |row|
      hash[ row[2] ] = row[6] + row[7] + row[8]
    }
  end
end

 

結果

3回実験してみたが、RubyプラグインFasterCSVの方が5倍ほど早い事がわかった。詳細は、下図を参照してください。

 

まとめ

RubyでCSV関連を扱うときはプラグインのFasterCSVを使うようにしよう。

コメント (0)  |トラックバック (0)

ブックマークに追加する Subscribe with livedoor Reader あとで読む

トラックバック URL

この記事にコメントする

ニックネーム:
メールアドレス:
URL:


KBMJのWebソリューション
Ruby on Rails Summer Festival 2008開催決定!!

TOPICS

2008/06/25
ZD Net Builder」の連載記事です。第四回は「Rubyでどう書く?:重複したRSSをまとめる」が掲載されました。

2008/05/30
ZD Net Builder」の連載記事です。第三回は「Rubyでどう書く?:Rubyで特定URLの画像パス一覧を表示する」が掲載されました。

2008/05/07
ZD Net Builder」に連載を始めました。第二回は「Rubyでどう書く?:RubyでPDF履歴書を作成する」が掲載されました。

2008/04/24
アットマーク・アイティ」に『 Rubyを使ってPaSoRi経由でSuicaの乗車履歴を取得し、GoogleMapsやGoogleEarthで表示する』が掲載されました。

全体のRoR最新ブログ一覧

プロフィール

  • ワイY
  • 24 歳

ブログの購読

RSS

timelog
株式会社ケイビーエムジェイロゴ