Skip to content

Instantly share code, notes, and snippets.

@iogakos
Created July 4, 2013 14:24
Show Gist options
  • Save iogakos/5928201 to your computer and use it in GitHub Desktop.
Save iogakos/5928201 to your computer and use it in GitHub Desktop.
GC::Profiler.enable
vm_before = File.read("/proc/#{$$}/status").match(/^VmSize:\s*(\d*)/)[1].to_i
def vm_used(vm_before)
File.read("/proc/#{$$}/status").match(/^VmSize:\s*(\d*)/)[1].to_i - vm_before
end
# w/o block
def gsub_wo(s)
["la ", "ko "].each{ |t| s.gsub!(/#{t}/, "") }
end
p [:before_string_build, vm_used(vm_before)]
s = ""
3495253.times { |i| s << "la " } # ~10 Mb
3495253.times { |i| s << "ko " } # ~10 Mb
p [:after_string_build, vm_used(vm_before)]
p [:before_gsub_wo_block, vm_used(vm_before)]
gsub_wo(s)
p [:after_gsub_wo_block, vm_used(vm_before)]
p [:before_gc_start, vm_used(vm_before)]
GC.start
p [:after_gc_start, vm_used(vm_before)]
GC::Profiler.report
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment