[#11890] Ruby and Solaris door library — "Hiro Asari" <asari.ruby@...>

Hi, there. This is my first patch against ruby. I think I followed

19 messages 2007/08/13
[#11892] Re: Ruby and Solaris door library — Daniel Berger <djberg96@...> 2007/08/14

Hiro Asari wrote:

[#11899] pack/unpack 64bit Integers — Hadmut Danisch <hadmut@...>

Hi,

13 messages 2007/08/14
[#11903] Re: pack/unpack 64bit Integers — Brian Candler <B.Candler@...> 2007/08/15

On Wed, Aug 15, 2007 at 06:50:01AM +0900, Hadmut Danisch wrote:

[#11948] Fibers in Ruby 1.9? — David Flanagan <david@...>

I just noticed that my ruby1.9 build of August 17th includes a Fiber

22 messages 2007/08/22
[#11949] Re: Fibers in Ruby 1.9? — Daniel Berger <djberg96@...> 2007/08/22

David Flanagan wrote:

[#11950] Re: Fibers in Ruby 1.9? — "Francis Cianfrocca" <garbagecat10@...> 2007/08/22

On 8/22/07, Daniel Berger <djberg96@gmail.com> wrote:

[#11952] Re: Fibers in Ruby 1.9? — MenTaLguY <mental@...> 2007/08/22

On Wed, 22 Aug 2007 20:50:12 +0900, "Francis Cianfrocca" <garbagecat10@gmail.com> wrote:

[#11988] String#length not working properly in Ruby 1.9 — "Vincent Isambart" <vincent.isambart@...>

I saw that Matz just merged his M17N implementation in the trunk.

17 messages 2007/08/25
[#11991] Re: String#length not working properly in Ruby 1.9 — "Michael Neumann" <mneumann@...> 2007/08/25

On Sat, 25 Aug 2007 10:54:20 +0200, Yukihiro Matsumoto

[#11992] Re: String#length not working properly in Ruby 1.9 — Yukihiro Matsumoto <matz@...> 2007/08/25

Hi,

[#12042] Encodings of string literals; explicit codepoint escapes? — David Flanagan <david@...>

This message contains queries that probably only Matz can answer:

16 messages 2007/08/31
[#12043] Re: Encodings of string literals; explicit codepoint escapes? — Yukihiro Matsumoto <matz@...> 2007/08/31

Hi,

Backport BufferedIO size increase?

From: Brian Candler <B.Candler@...>
Date: 2007-08-30 12:30:27 UTC
List: ruby-core #12034
A colleague of mine is using ruby-1.8.6-p36 and Net::HTTP on OpenWrt (a
small MIPS platform) to retrieve relatively large files.

He found performance to be poor. Using the test program below, using
Net::HTTP to retrieve a 3.2MB file from a machine on the same LAN took 64
seconds.

However, Net::HTTP uses a class called BufferedIO when reading data from a
socket, defined in net/protocol.rb, and BufferedIO has a fixed 1024-byte
buffer. I increased the block size, and this made some huge performance
gains:

Blocksize     Time
 (bytes)      (secs)

  1024         64.0
 16384          5.5
 65536          3.5

Looking in trunk, I see that in March (r12091) a constant BUFSIZE was
introduced, which now defaults to 16KB.

So, is there any reason not to back-port this to 1.8? As far as I can tell,
BufferedIO is only used by Net::HTTP, and it's marked "internal use only".
However, it does mean of HTTPResponse#read_body would get data in larger
chunks.

Thanks,

Brian.

--------------------------------------------------------------------------
#!/usr/bin/ruby -w
require 'net/http'

uri_str = "http://mypc.example.com/foo"  # 3.2MB file

URI.parse(uri_str)
count = 0
total = 0
starttime = nil
Net::HTTP.new(uri.host, uri.port).start { |http|
  http.request_get(uri.request_uri) { |response|
    response.read_body { |chk|
      if count == 0
        puts "Starting..."
        starttime = Time.now
      end
      count += 1
      total += chk.size
    }
  }
}
puts "Time taken: #{Time.now - starttime}"
puts "Chunks: #{count}"
puts "Total size: #{total}"

In This Thread

Prev Next