RubyによるCSV検索チューニング_ファイルインデックス修正

2022/06/08

Categories: drepo Tags: ruby csv index

linear_search module -> class · wasuken/simple-csv-search@11fb776 · GitHub

大まかな修正としては

調査とか

wc -l db.csv
10552 db.csv

1万行程度のCSVで検証。

require "csv"

rst = []
CSV.foreach("./db.csv", header: true) do |row|
  if rst["title"]
    rst << row
  end
end
% time ruby test.rb

________________________________________________________
Executed in    2.65 secs    fish           external
   usr time    2.47 secs    1.70 millis    2.46 secs
   sys time    0.14 secs    0.68 millis    0.14 secs

適当に調べたけどやはり全読み込みは遅い。

もっと大きいCSVで検証してみたい。

分割してデータアクセスすれば早そう

3000

% time ruby test.rb

________________________________________________________
Executed in    1.10 secs      fish           external
   usr time  939.29 millis    1.74 millis  937.55 millis
   sys time  124.87 millis    0.67 millis  124.20 millis


1000

% time ruby test.rb

________________________________________________________
Executed in  692.81 millis    fish           external
   usr time  565.85 millis    1.63 millis  564.22 millis
   sys time  105.90 millis    0.00 millis  105.90 millis


全部読み込む前提で考えると1000がラインかな。

次やること

>> Home