RosettaCodeData/Task/Rate-counter/Crystal/rate-counter.cr
2024-10-16 18:07:41 -07:00

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