require "benchmark" require "../src/dodb.cr" require "./test-data.cr" class DODBCached < DODB::CachedDataBase(Ship) def initialize(storage_ext = "", remove_previous_data = true) storage_dir = "test-storage#{storage_ext}" if remove_previous_data ::FileUtils.rm_rf storage_dir end super storage_dir end end class DODBUnCached < DODB::DataBase(Ship) def initialize(storage_ext = "", remove_previous_data = true) storage_dir = "test-storage#{storage_ext}" if remove_previous_data ::FileUtils.rm_rf storage_dir end super storage_dir end end cached = DODBCached.new uncached = DODBUnCached.new Benchmark.ips do |x| x.report("adding values with a cache") do Ship.all_ships.each do |ship| cached << ship end end x.report("adding values without cache") do Ship.all_ships.each do |ship| uncached << ship end end end cached = DODBCached.new uncached = DODBUnCached.new Ship.all_ships.each do |ship| cached << ship uncached << ship end Benchmark.ips do |x| x.report("to_a with a cache") do cached.to_a end x.report("to_a without cache") do uncached.to_a end end Benchmark.ips do |x| x.report("to_h with a cache") do cached.to_h end x.report("to_h without cache") do uncached.to_h end end Benchmark.ips do |x| x.report("[0] with a cache") do cached[0] end x.report("[0] without cache") do uncached[0] end end