CSV.table が CSV.read に比べて非常に遅い理由
タブ区切りの3,000行ほどのCSVファイルを CSV.table
で読み込もうとすると非常に遅かったので CSV.read
を試してみたところ100分の1程度で処理できました。
Benchmark.bm 10 do |r|
r.report "read" do
CSV.read(filename, col_sep: "\t", headers: true, header_converters: :symbol)
end
r.report "table" do
CSV.table(filename, col_sep: "\t")
end
end
user system total real
read 0.050000 0.000000 0.050000 ( 0.046571)
table 4.790000 0.010000 4.800000 ( 4.814375)
CSV.table
は常にCSV.read
に対してこれほど速度差があるのでしょうか、
それとも何か特別な原因がある時だけ遅くなるのでしょうか?