require "benchmark" string_hash = {} symbol_hash = {} (0..50000).map do |i| string_hash["key_#{i}"] = i symbol_hash[:"key_#{i}"] = i end string_accessors = Array.new(100000) { "key_#{rand(50000)}" } symbol_accessors = Array.new(100000) { :"key_#{rand(50000)}" } Benchmark.bm do |x| x.report("strings") { string_accessors.each { |a| string_hash[a] } } x.report("symbols") { symbol_accessors.each { |a| symbol_hash[a] } } x.report("strings, set") { string_accessors.each { |a| string_hash[a] = a } } x.report("symbols, set") { symbol_accessors.each { |a| symbol_hash[a] = a } } end