require 'test/unit' class TestHashSize < Test::Unit::TestCase def test_hash_size hash = generate_big_hash result = ((hash.inject(0){|s,(k,v)| s + k.to_s.bytesize + v.to_s.bytesize } )/ 1024.0) / 1024.0 puts "#{result.to_f} MB" end def generate_big_hash lac = 1000000 hash = {} 1.upto(lac) do email_id = generate_email_id if hash.has_key?(email_id) puts "came inside" email_id = generate_email_id end hash[email_id] = nil end return hash end def generate_email_id o = [('a'..'z'),('A'..'Z')].map{|i| i.to_a}.flatten; email_id = (0..32).map{ o[rand(o.length)] }.join; end end =begin Result: Loaded suite test_hash_size Started 31.4712524414062 31.4712524414062 MB . Finished in 290.814567 seconds =end