Sha256: f338ed2ffe8b87902e438a2d4c9b961122a1adf05178336cc9533e9e9974c0b8

Contents?: true

Size: 1.57 KB

Versions: 6

Compression:

Stored size: 1.57 KB

Contents

require 'benchmark'
require 'hashie'
require 'ostruct'
require_relative '../lib/blobject'


iterations = ARGV[0] || 1000000


class A # a foo-bar class the we'll use when benchmarking objects
  attr_accessor :member1
end


object   = A.new
blobject = Blobject.new
hash     = {}
hashie   = Hashie::Mash.new
ostruct  = OpenStruct.new

value = "data"



puts "\n\nITERATIONS: #{iterations}\n\n"
puts "\nBENCHMARK: assign\n=====================\n\n"



Benchmark.bm do |benchmark|

  benchmark.report("Object: ") do
    iterations.times do
      object.member1 = value
    end
  end

  benchmark.report("Hash: ") do
    iterations.times do
      hash[:member1] = value
    end
  end

  benchmark.report("Blobject: ") do
    iterations.times do
      blobject.member1 = value
    end
  end

  benchmark.report("Hashie: ") do
    iterations.times do
      hashie.member1 = value
    end
  end

  benchmark.report("OpenStruct: ") do
    iterations.times do
      ostruct.member1 = value
    end
  end
end



puts "\n\nBENCHMARK: read\n=====================\n\n"



Benchmark.bm do |benchmark|

  benchmark.report("Object: ") do
    iterations.times do
      value = object.member1
    end
  end

  benchmark.report("Hash: ") do
    iterations.times do
      value = hash[:member1]
    end
  end

  benchmark.report("Blobject: ") do
    iterations.times do
      value = blobject.member1
    end
  end

  benchmark.report("Hashie: ") do
    iterations.times do
      value = hashie.member1
    end
  end

  benchmark.report("OpenStruct: ") do
    iterations.times do
      value = ostruct.member1
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
blobject-0.5.0 benchmarks/benchmark.rb
blobject-0.4.1 benchmarks/benchmark.rb
blobject-0.4.0 benchmarks/benchmark.rb
blobject-0.3.7 benchmarks/benchmark.rb
blobject-0.3.3 benchmarks/benchmark.rb
blobject-0.3.2 benchmarks/benchmark.rb