anildigital (owner)

Revisions

gist: 134369 Download_button fork
public
Public Clone URL: git://gist.github.com/134369.git
Embed All Files: show embed
Ruby #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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