Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
## Sample code causes leaks in 1.8.6p238 and p265, but not p111ubuntu # Helpers def vsz File.open("/proc/#{Process.pid}/status"){|h| h.read[/VmSize:\s+(\d+)\s/, 1]}.to_i end def measure(title, count=100_000, &block) puts "# %s" % title puts "before: %i" % vsz count.times{yield} puts "after: %i" % vsz end # Does leak measure("String#=~"){"" =~ //} measure("String#sub string"){"".sub("", "")} measure("String#sub regexp"){"".sub(//, "")} measure("String#[Regexp, Fixnum]"){""[//, 0]} measure("String#match"){"".match(//)} measure("Regexp#match"){Regexp.new(//).match("")} measure("Regexp#~"){$_ = ""; ~ //} # Leaks very fast! # Doesn't leak measure("String.new"){""} measure("String#[]="){"a"[0]="b"} measure("String#+"){"a"+"b"} measure("String interpolation"){"#{1/2}"} measure("String#upcase"){"foo".upcase} measure("Regexp#new"){Regexp.new("")}
This paste will be private.
From the Design Piracy series on my blog: