mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
436eef270d
We no longer need the compressed data once the inflate block is called; so clear it ASAP to reduce memory overhead. This is a small chunk, so it only saves a few hundred kilobytes with the script below. before: RssAnon: 5976 kB after: RssAnon: 5564 kB ------ require 'net/http' require 'zlib' response_gz = ARGV.shift or abort "#$0 TEMPORARY_FILE" # pre-create response since compressing is slower than decompressing unless File.readable?(response_gz) nr = 16384 * 2 buf = ((0..255).map(&:chr).join * 128) File.open(response_gz, 'wb') do |fp| gzip = Zlib::GzipWriter.new(fp) nr.times { gzip.write(buf) } gzip.close end buf.clear end response_gz = File.open(response_gz) s = TCPServer.new('127.0.0.1', 0) pid = fork do c = s.accept c.readpartial(16384).clear c.write("HTTP/1.1 200 OK\r\n" \ "Content-Length: #{response_gz.stat.size}\r\n" \ "Content-Encoding: gzip\r\n" \ "Accept-Ranges: bytes\r\n" \ "\r\n") IO.copy_stream(response_gz, c) c.close end addr = s.addr Net::HTTP.start(addr[3], addr[1]) do |http| http.request_get(-'/') do |res| res.read_body(&:clear) end end puts File.readlines(-'/proc/self/status').grep(/RssAnon/)[0] Process.waitpid2(pid) ------ * lib/net/http/response.rb (inflate_adapter): clear compressed_chunk git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61684 b2dd03c8-39d4-4d8f-98ff-823fe69b080e |
||
---|---|---|
.. | ||
cgi | ||
drb | ||
forwardable | ||
irb | ||
matrix | ||
net | ||
optparse | ||
racc | ||
rdoc | ||
rexml | ||
rinda | ||
rss | ||
rubygems | ||
shell | ||
unicode_normalize | ||
uri | ||
webrick | ||
yaml | ||
.document | ||
abbrev.rb | ||
base64.rb | ||
benchmark.rb | ||
cgi.rb | ||
cmath.gemspec | ||
cmath.rb | ||
csv.gemspec | ||
csv.rb | ||
debug.rb | ||
delegate.rb | ||
drb.rb | ||
e2mmap.rb | ||
English.rb | ||
erb.rb | ||
fileutils.gemspec | ||
fileutils.rb | ||
find.rb | ||
forwardable.rb | ||
getoptlong.rb | ||
ipaddr.gemspec | ||
ipaddr.rb | ||
irb.rb | ||
logger.rb | ||
matrix.rb | ||
mkmf.rb | ||
monitor.rb | ||
mutex_m.rb | ||
observer.rb | ||
open-uri.rb | ||
open3.rb | ||
optionparser.rb | ||
optparse.rb | ||
ostruct.rb | ||
pp.rb | ||
prettyprint.rb | ||
prime.rb | ||
profile.rb | ||
profiler.rb | ||
pstore.rb | ||
rdoc.rb | ||
resolv-replace.rb | ||
resolv.rb | ||
rss.rb | ||
rubygems.rb | ||
scanf.gemspec | ||
scanf.rb | ||
securerandom.rb | ||
set.rb | ||
shell.rb | ||
shellwords.rb | ||
singleton.rb | ||
sync.rb | ||
tempfile.rb | ||
thwait.rb | ||
time.rb | ||
timeout.rb | ||
tmpdir.rb | ||
tracer.rb | ||
tsort.rb | ||
un.rb | ||
uri.rb | ||
weakref.rb | ||
webrick.rb | ||
yaml.rb |