Я несколько раз пытался выполнить следующее (после комментария Йерга это было обновлено для использования фиксированной переменной для значения вместо создания большого количества строк) :
require 'benchmark'
Example = Struct.new("Example", :value)
struct = Example.new
hash = {}
value = "The value"
n = 5000000
Benchmark.bm do |m|
# test assignment and access for Hash and Struct
m.report { n.times do; hash[:value] = value; end }
m.report { n.times do; struct.value = value; end }
end
Обновление
Кажется, с достаточно большим значением n
Struct немного медленнее, но я не могу себе представить, что это будет заметно или проблема на практике.