Я работаю с 6 CSV-файлами, каждый из которых содержит атрибуты объекта. Я могу читать их по одному, но идея разделения каждого из них на поток, выполняемый параллельно, очень привлекательна.
Я создал объект базы данных (не допускаются реляционные БД или 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)? Это хороший случай для Рубинуса?