Sha256: c7455b568ddcab2bcfda95bb0919427e11dc9486cfa480f6f8ee334c862df702

Contents?: true

Size: 1.44 KB

Versions: 3

Compression:

Stored size: 1.44 KB

Contents

require "hashie/mash"
require "mighty_struct"
require "pry"
require_relative "../mighty_struct"

class Benchmark::MightyStruct::MightyStructVersusOthers
  def call
    hash = {
      a: 1,
      b: {
        c: 2,
        "d" => 3,
        e: [
          {
            f: 4
          }
        ]
      }
    }

    puts "\n"

    Benchmark.ips do |x|
      puts "Hashie::Mash.new(hash)"
      puts "MightyStruct.new(hash)"
      puts "OpenStruct.new(hash)"
      puts "\n"

      x.report("Hashie::Mash") { Hashie::Mash.new(hash) }
      x.report("MightyStruct") { MightyStruct.new(hash) }
      x.report("OpenStruct") { OpenStruct.new(hash) }

      x.compare!
    end

    [:enabled, :disabled].each do |_caching_mode|
      puts "Hashie::Mash.new(hash).b.c"
      puts "MightyStruct.new(hash, caching: :#{_caching_mode}).b.c"
      puts "OpenStruct.new(hash).b.c"
      puts "\n"

      Benchmark.ips do |x|
        hashie_mash = Hashie::Mash.new(hash)
        mighty_struct = MightyStruct.new(hash, caching: _caching_mode)
        open_struct = OpenStruct.new(hash)
        open_struct.b = OpenStruct.new(open_struct.b)

        if hashie_mash.b.c != hash[:b][:c] || mighty_struct.b.c != hash[:b][:c] || open_struct.b.c != hash[:b][:c]
          raise
        end

        x.report("Hashie::Mash") { hashie_mash.b.c }
        x.report("MightyStruct") { mighty_struct.b.c }
        x.report("OpenStruct") { open_struct.b.c }

        x.compare!
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mighty_struct-0.2.0 benchmark/mighty_struct/mighty_struct_versus_others.rb
mighty_struct-0.1.5 benchmark/mighty_struct/mighty_struct_versus_others.rb
mighty_struct-0.1.4 benchmark/mighty_struct/mighty_struct_versus_others.rb