From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-3.3 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00, RP_MATCHES_RCVD shortcircuit=no autolearn=unavailable version=3.3.2 X-Original-To: kcar-public@bogomips.org Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 88E417B705D for ; Tue, 4 Aug 2015 22:21:41 +0000 (UTC) From: Eric Wong To: kcar-public@bogomips.org Subject: [PATCH] kcar/response: remove const optimizations for Ruby < 2.1 Date: Tue, 4 Aug 2015 22:21:41 +0000 Message-Id: <1438726901-15284-1-git-send-email-e@80x24.org> List-Id: Ruby 2.1 and later emits opt_str_freeze to deduplicate literal String#freeze calls, leading to even better performance than the overhead from constant lookups (which have inline cache overhead). --- lib/kcar/response.rb | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/kcar/response.rb b/lib/kcar/response.rb index dba7fc8..954502c 100644 --- a/lib/kcar/response.rb +++ b/lib/kcar/response.rb @@ -7,8 +7,6 @@ class Kcar::Response attr_accessor :sock, :hdr, :unchunk, :buf, :parser # :stopdoc: - LAST_CHUNK = "0\r\n" - CRLF = "\r\n" Parser = Kcar::Parser # :startdoc: @@ -91,12 +89,12 @@ class Kcar::Response size = dst.size if size > 0 yield("#{size.to_s(16)}\r\n") - yield(dst << CRLF) + yield(dst << "\r\n".freeze) end break if @parser.body_eof? end while @buf << @sock.readpartial(READ_SIZE, dst) - yield LAST_CHUNK + yield "0\r\n".freeze until @parser.trailers(@hdr, @buf) @buf << @sock.readpartial(READ_SIZE, dst) @@ -106,7 +104,7 @@ class Kcar::Response # in the response, we'll just yield a stringified version to our # server and pretend it's part of the body. trailers = @parser.extract_trailers(@hdr) - yield(trailers.map! { |k,v| "#{k}: #{v}\r\n" }.join << CRLF) + yield(trailers.map! { |k,v| "#{k}: #{v}\r\n" }.join << "\r\n".freeze) end def each_until_eof -- EW