Sha256: d554c3552dd1b9dc2ecb314e7dc9743dc68554e3f8a0d15a3084ac242a385314
Contents?: true
Size: 1.12 KB
Versions: 1
Compression:
Stored size: 1.12 KB
Contents
$LOAD_PATH.unshift('lib') require 'bundler/setup' require 'dry-types' module SchemaBench def self.hash_schema(type) Dry::Types['nominal.hash'].public_send(type, email: Dry::Types['nominal.string'], age: Dry::Types['params.integer'], admin: Dry::Types['params.bool'], address: Dry::Types['nominal.hash'].public_send(type, city: Dry::Types['nominal.string'], street: Dry::Types['nominal.string'] ) ) end private_class_method(:hash_schema) SCHEMAS = Dry::Types::Hash .public_instance_methods(false) .map { |schema_type| [schema_type, hash_schema(schema_type)] } .to_h INPUT = { email: 'jane@doe.org', age: '20', admin: '1', address: { city: 'NYC', street: 'Street 1/2' } } end require 'benchmark/ips' Benchmark.ips do |x| SchemaBench::SCHEMAS.each do |schema_type, schema| x.report("#{schema_type}#call") do schema.call(SchemaBench::INPUT) end end SchemaBench::SCHEMAS.each do |schema_type, schema| x.report("#{schema_type}#try") do schema.try(SchemaBench::INPUT) end end x.compare! end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dry-types-0.15.0 | benchmarks/hash_schemas.rb |