ОБНОВЛЕНИЕ:
Начиная с Ruby 2.4.1 OpenStruct и Struct намного ближе по скорости. См. https://stackoverflow.com/a/43987844/128421
ПРЕДЫДУЩАЯ:
Для полноты: Структура против Класс против Хэш против OpenStruct
Запуск кода, подобного burtlo, на Ruby 1.9.2 (1 из 4 ядер x86_64, 8 ГБ ОЗУ) [таблица отредактирована для выравнивания столбцов]:
creating 1 Mio Structs : 1.43 sec , 219 MB / 90MB (virt/res)
creating 1 Mio Class instances : 1.43 sec , 219 MB / 90MB (virt/res)
creating 1 Mio Hashes : 4.46 sec , 493 MB / 364MB (virt/res)
creating 1 Mio OpenStructs : 415.13 sec , 2464 MB / 2.3GB (virt/res) # ~100x slower than Hashes
creating 100K OpenStructs : 10.96 sec , 369 MB / 242MB (virt/res)
OpenStructs sloooooow и интенсивное использование памяти и плохо масштабируются для больших наборов данных
Создание 1 Mio OpenStructs в ~ 100 раз медленнее, чем Создание 1 Mio Хэшей .
start = Time.now
collection = (1..10**6).collect do |i|
{:name => "User" , :age => 21}
end; 1
stop = Time.now
puts "#{stop - start} seconds elapsed"