Sha256: 5ac6564fd61dc8e7f2c084c685f639695a7b1480a4d8a42ef9ea044372387b13

Contents?: true

Size: 888 Bytes

Versions: 3

Compression:

Stored size: 888 Bytes

Contents

require_relative '../lib/value_struct'
require 'benchmark'
require 'immutable_struct'
require 'values'

COUNT = 200_000

def benchmark_for(struct_class)
  puts "%20s: %s" % [
    struct_class,
    Benchmark.measure do
      struct = struct_class.new(:a, :b, :c, :d)
       COUNT.times{
        n = struct.new(nil, nil, nil, nil)
        s = struct.new([1,2,3,4], "value", 23432421412, n)
        s.a == s.b
        s.c == s.d
        s == n
      }
    end
  ]
end

def benchmark_for_hash
  puts "%20s: %s" % [
    "[Hash]",
    Benchmark.measure do
      COUNT.times{
        n = { a: nil, b: nil, c: nil, d: nil }
        s = { a: [1,2,3,4], b: "value", c: 23432421412, d: nil }
        s[:a] == s[:b]
        s[:c] == s[:d]
        s == n
      }
    end
  ]
end


benchmark_for(Struct)
benchmark_for(Value)
benchmark_for(ImmutableStruct)
benchmark_for(ValueStruct)
benchmark_for_hash

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
value_struct-0.7.0 spec/benchmark.rb
value_struct-0.6.0 spec/benchmark.rb
value_struct-0.5.0 spec/benchmark.rb