From 810701d939114a5fcdacc55ec383de112c5e3fa4 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 17 Jan 2011 03:42:33 +0000 Subject: ev_core: reuse buffer to avoid GC thrashing Single-threaded concurrency models can reuse a single buffer to avoid thrashing memory and causing unnecessary GC activity. --- lib/rainbows/event_machine/response_chunk_pipe.rb | 2 +- lib/rainbows/event_machine/response_pipe.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'lib/rainbows/event_machine') diff --git a/lib/rainbows/event_machine/response_chunk_pipe.rb b/lib/rainbows/event_machine/response_chunk_pipe.rb index 5caf250..af9393a 100644 --- a/lib/rainbows/event_machine/response_chunk_pipe.rb +++ b/lib/rainbows/event_machine/response_chunk_pipe.rb @@ -10,7 +10,7 @@ module Rainbows::EventMachine::ResponseChunkPipe def notify_readable begin - data = @io.read_nonblock(16384, BUF) + data = @io.read_nonblock(16384, RBUF) @client.write("#{data.size.to_s(16)}\r\n") @client.write(data) @client.write("\r\n") diff --git a/lib/rainbows/event_machine/response_pipe.rb b/lib/rainbows/event_machine/response_pipe.rb index 3b584c7..0ea1eae 100644 --- a/lib/rainbows/event_machine/response_pipe.rb +++ b/lib/rainbows/event_machine/response_pipe.rb @@ -3,7 +3,7 @@ module Rainbows::EventMachine::ResponsePipe # garbage avoidance, EM always uses this in a single thread, # so a single buffer for all clients will work safely - BUF = '' + RBUF = Rainbows::EvCore::RBUF def initialize(client) @client = client @@ -11,7 +11,7 @@ module Rainbows::EventMachine::ResponsePipe def notify_readable begin - @client.write(@io.read_nonblock(16384, BUF)) + @client.write(@io.read_nonblock(16384, RBUF)) rescue Errno::EINTR rescue Errno::EAGAIN return -- cgit v1.2.3-24-ge0c7