From a891484a4edb241ae1b11f3b336f63fe08b10cb7 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Thu, 28 Mar 2013 13:13:28 -0700 Subject: [PATCH] net/http: inline chunkWriter in response A chunkWriter and a response are 1:1. Make them contiguous in memory and save an allocation. benchmark old ns/op new ns/op delta BenchmarkServerFakeConnWithKeepAliveLite 10715 10539 -1.64% benchmark old allocs new allocs delta BenchmarkServerFakeConnWithKeepAliveLite 21 20 -4.76% benchmark old bytes new bytes delta BenchmarkServerFakeConnWithKeepAliveLite 1626 1609 -1.05% R=golang-dev, gri CC=golang-dev https://golang.org/cl/8114043 --- src/pkg/net/http/server.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/pkg/net/http/server.go b/src/pkg/net/http/server.go index 3a0cca7fdc..baddc72bc8 100644 --- a/src/pkg/net/http/server.go +++ b/src/pkg/net/http/server.go @@ -288,7 +288,7 @@ type response struct { wroteContinue bool // 100 Continue response was written w *bufio.Writer // buffers output in chunks to chunkWriter - cw *chunkWriter + cw chunkWriter sw *switchWriter // of the bufio.Writer, for return to putBufioWriter // handlerHeader is the Header that Handlers get access to, @@ -558,10 +558,9 @@ func (c *conn) readRequest() (w *response, err error) { req: req, handlerHeader: make(Header), contentLength: -1, - cw: new(chunkWriter), } w.cw.res = w - w.w, w.sw = newBufioWriterSize(w.cw, bufferBeforeChunkingSize) + w.w, w.sw = newBufioWriterSize(&w.cw, bufferBeforeChunkingSize) return w, nil } -- 2.48.1