Sha256: acc26fcdeac5503ebc459979b7e1e9edc625fbe2c13ed25c0c1657af909b4781

Contents?: true

Size: 992 Bytes

Versions: 5

Compression:

Stored size: 992 Bytes

Contents

#!/usr/bin/env ruby

require 'bundler/setup'
require 'skn_utils'
require 'ostruct'
require 'benchmark/ips'

Benchmark.ips do |x|

  class RegularClass
    attr_accessor :foo
  end

  class OpenStructClass < OpenStruct
  end

  x.report('regular class') do
    r = RegularClass.new
    r.foo = :bar
    r.foo
  end

  x.report('OpenStruct class') do
    o = OpenStructClass.new(foo: nil)
    o.foo = :bar
    o.foo
  end

  x.report('NestedResult class') do
    n = SknUtils::NestedResult.new(foo: nil)
    n.foo = :bar
    n.foo
  end
end

# Warming up --------------------------------------
#      regular class   182.079k i/100ms
#   OpenStruct class    12.129k i/100ms
# NestedResult class    11.075k i/100ms
# Calculating -------------------------------------
#      regular class      4.140M (± 2.2%) i/s -     20.757M in   5.015689s
#   OpenStruct class    129.418k (± 2.3%) i/s -    654.966k in   5.063580s
# NestedResult class    115.819k (± 2.3%) i/s -    586.975k in   5.070852s

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
skn_utils-3.3.2 bin/benchmark.rb
skn_utils-3.3.1 bin/benchmark.rb
skn_utils-3.3.0 bin/benchmark.rb
skn_utils-3.2.1 bin/benchmark.rb
skn_utils-3.2.0 bin/benchmark.rb