FastestCSV がヤクい件
Ruby の標準添付CSV パーサが遅いというのは有名な話なので
これまでは主にFasterCSV を使っていました。
FasterCSV のベンチマーク - *Trace Output* にあるとおり、標準のパーサと比較して
と、それなりに満足していたのですが、とあるPHP で書かれた「CSV を解析してほげほげする処理」を
Ruby で書き直してみたところ、10倍以上の時間が掛かるようになってしまいました。
# 4万行↑のCSV のため、数十秒以上の開きが……。
そこで、先ほどのベンチマークにコメントされていた
moonwolf 2006/06/02 14:28
flexを使ってFastestCSVという拡張ライブラリを書いてみました。
Pythonの2〜3倍くらいの実行時間にまで早くなりましたw
id:moonwolf 氏のFastestCSV を試してみることに。
ちょっと見つけにくかったですが、RAA - csvscan にありました。
CSVScan が正式名称なのでしょうか。
インストールはREADME.ja を見ればすぐに分かるので割愛。
試してみた結果は非常に満足。PHP とほぼ同じくらいの速度で解析されているようです。
使い方が標準のCSV やFasterCSV と少しだけ違うので気をつけないといけないですね。
require "csvscan" # ライブラリのロード open(ARGV.shift) {|io| CSVScan.scan(io) {|row| p row } }