27 lines
665 B
Crystal
27 lines
665 B
Crystal
require "benchmark"
|
|
|
|
struct Document
|
|
property :id
|
|
def initialize(@id : Int32) end
|
|
end
|
|
|
|
documents_a = [] of Int32 | Document
|
|
documents_h = {} of Int32 => Int32 | Document
|
|
|
|
1.upto(10_000) do |n|
|
|
d = Document.new(n)
|
|
documents_a << d
|
|
documents_h[d.id] = d
|
|
end
|
|
|
|
searchlist = Array.new(1000){ rand(10_000)+1 }
|
|
|
|
Benchmark.bm do |x|
|
|
x.report("array"){searchlist.each{ |el| documents_a.any?{ |d| d == el }} }
|
|
x.report("hash") {searchlist.each{ |el| documents_h.has_key?(el) } }
|
|
end
|
|
puts
|
|
Benchmark.ips do |x|
|
|
x.report("array"){searchlist.each{ |el| documents_a.any?{ |d| d == el }} }
|
|
x.report("hash") {searchlist.each{ |el| documents_h.has_key?(el) } }
|
|
end
|