Sha256: 9c7ea899cb3f3fab4799a5084cdf6d64b5ac6ad2cd5c2895532382777f02b530
Contents?: true
Size: 1.15 KB
Versions: 1
Compression:
Stored size: 1.15 KB
Contents
#!/usr/bin/env ruby require 'bundler/inline' require 'benchmark' require 'ostruct' gemfile do source 'https://rubygems.org' gem 'ivo', '~> 0.4' gem 'immutable-struct', '~> 2.4' gem 'values', '~> 1.8' end StructClass = Struct.new(:x, :y) ImmutableStructClass = ImmutableStruct.new(:x, :y) ValueClass = Value.new(:x, :y) IvoClass = Ivo.new(:x, :y) n = 1_000_000 Benchmark.bm(30) do |x| x.report('StructClass.new') do n.times do StructClass.new(1, 2) end end x.report('IvoClass.new') do n.times do IvoClass.new(1, 2) end end x.report('IvoClass.with') do n.times do IvoClass.with(x: 1, y: 2) end end x.report('ValueClass.new') do n.times do ValueClass.new(1, 2) end end x.report('ValueClass.with') do n.times do ValueClass.with(x: 1, y: 2) end end x.report('ImmutableStructClass.new') do n.times do ImmutableStructClass.new(x: 1, y: 2) end end end Benchmark.bm(30) do |x| x.report('OpenStruct.new') do n.times do OpenStruct.new(x: 1, y: 2) end end x.report('Ivo.call') do n.times do Ivo.call(x: 1, y: 2) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ivo-0.5.0 | benchmarks.rb |