Skip to content

Instantly share code, notes, and snippets.

@PatrickTulskie
Created October 13, 2009 19:45
Show Gist options
  • Save PatrickTulskie/209481 to your computer and use it in GitHub Desktop.
Save PatrickTulskie/209481 to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'mash'
require 'hashie'
require 'benchmark'
huge_hash = { }
big_block_of_text = ";dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d;dfngsd;gndsfgnsdf;gnsdf;hndfs'hfgnh'isfgng'asifnsd;iofgbdsf;hugsdbf;isdangliusdfgn;sdfing'disv c;jvb f;jb fs;ib s;div d"
70.times do |integer|
huge_hash["layer#{integer}"] = []
2000.times do |i|
huge_hash["layer#{integer}"][i] = big_block_of_text.clone * 5
end
end
raw_counter = 0
mashed_counter = 0
hashied_counter = 0
Benchmark.bm do |x|
x.report { raw_counter = huge_hash['layer20'].length }
x.report { mash = Mash.new(huge_hash); mashed_counter = mash.layer20.length }
x.report { hashie = Hashie::Mash.new(huge_hash); hashied_counter = hashie.layer20.length }
end
puts "Raw Ruby Hash Counter: " + raw_counter.to_s
puts "Mashed Ruby Hash Counter: " + mashed_counter.to_s
puts "Hashie Ruby Hash Counter: " + hashied_counter.to_s
=begin
user system total real
0.000000 0.000000 0.000000 ( 0.000009)
0.230000 0.010000 0.240000 ( 0.426423)
0.100000 0.020000 0.120000 ( 1.428347)
Raw Ruby Hash Counter: 2000
Mashed Ruby Hash Counter: 2000
Hashie Ruby Hash Counter: 2000
=end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment