Created
October 7, 2010 16:44
-
-
Save miloops/615431 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# instances method | |
def instances(&block) | |
GC.enable_stats | |
GC.clear_stats | |
block.call | |
warmup_objs = GC.num_allocations | |
warmup_bytes = GC.allocated_size | |
GC.clear_stats | |
block.call | |
puts "Objects:" | |
puts "Warmup: #{warmup_objs} allocations | #{warmup_bytes} bytes" | |
puts "Actual: #{GC.num_allocations} allocations | #{GC.allocated_size} bytes" | |
end | |
Account.destroy_all | |
a = Account.create(:email => '[email protected]') | |
50.times do |i| | |
c = a.posts.create!(:title => "test", :body => "Loldel") | |
10.times do | |
c.comments.create!(:body => ("lol! " * 10)) | |
end | |
end | |
Account.first.posts(:include => :comments).map{|c| c.comments}.flatten.each do |comment| | |
comment.post.account.email | |
end; nil | |
instances do | |
Account.first.posts(:include => :comments).map{|c| c.comments}.flatten.each do |comment| | |
comment.post.account.email | |
end | |
end | |
With IdentityMap disabled: | |
Warmup: 563328 allocations | 20273094 bytes | |
Actual: 562227 allocations | 20264239 bytes | |
With IdentityMap enabled: | |
Warmup: 116908 allocations | 3621494 bytes | |
Actual: 21108 allocations | 390139 bytes | |
Account.first(:include => {:posts => :comments}).posts.map(&:comments).flatten.each do |comment| | |
comment.post.account.email | |
end; nil | |
instances do | |
Account.first(:include => {:posts => :comments}).posts.map(&:comments).flatten.each do |comment| | |
comment.post.account.email | |
end | |
end | |
With IdentityMap disabled: | |
Objects: | |
Warmup: 553832 allocations | 19720865 bytes | |
Actual: 553836 allocations | 19720860 bytes | |
With IdentityMap enabled: | |
Objects: | |
Warmup: 18401 allocations | 254328 bytes | |
Actual: 108517 allocations | 3078103 bytes | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment