Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Hash vs. Array vs. Set
require 'benchmark'
require 'set'
Document = Struct.new(:id,:a,:b,:c)
documents_a = []
documents_h = {}
documents_s = Set.new
1.upto(10_000) do |n|
d = Document.new(n)
documents_a << d
documents_h[d.id] = d
documents_s << d
end
searchlist = Array.new(1000){ rand(10_000)+1 }
Benchmark.bm(10) do |x|
x.report('array') {searchlist.each{|el| documents_a.any?{|d| d.id == el}} }
x.report('hash') {searchlist.each{|el| documents_h.has_key?(el)} }
x.report('set') {searchlist.each{|el| documents_s.include?(el)} }
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.