それぞれのオブジェクトの属性を含む6つのcsvファイルを扱っています。一度に1つずつ読むことができますが、スレッドごとに分割して並行して実行するという考えは非常に魅力的です。スレッドを使用してRubyでDBオブジェクトの作成を高速化する
保持しているオブジェクトごとに配列を持つデータベースオブジェクト(リレーショナルデータベースまたはORMは使用できません)を作成しました。私は各CSVを同時に開いて初期化するために以下のことを試しましたが、速度には何の影響も見ませんでした。
threads = []
CLASS_FILES.each do |klass, filename|
threads << Thread.new do
file_to_objects(klass, filename)
end
end
threads.each {|thread| thread.join}
update
end
def self.load(filename)
CSV.open("data/#{filename}", CSV_OPTIONS)
end
def self.file_to_objects(klass, filename)
file = load(filename)
method_name = filename.sub("s.csv","")
file.each do |line|
instance = klass.new(line.to_hash)
Database.instance.send("#{method_name}") << instance
end
end
どのように私はルビー(MRI 1.9.3)で物事をスピードアップできますか? Rubiniusにとってこれは良いケースですか?