http2: remove method value allocation per read frame
benchmark old ns/op new ns/op delta
BenchmarkServer_GetRequest-2 269540 259453 -3.74%
benchmark old allocs new allocs delta
BenchmarkServer_GetRequest-2 25 24 -4.00%
benchmark old bytes new bytes delta
BenchmarkServer_GetRequest-2 1613 1599 -0.87%
Change-Id: I33609d8fbe2f81e32095fac8b89ddd55592e583f
Reviewed-on: https://go-review.googlesource.com/20998
Reviewed-by: Andrew Gerrand <adg@golang.org>
diff --git a/http2/server.go b/http2/server.go
index 1e62c9c..74ec4a3 100644
--- a/http2/server.go
+++ b/http2/server.go
@@ -598,10 +598,11 @@
// It's run on its own goroutine.
func (sc *serverConn) readFrames() {
gate := make(gate)
+ gateDone := gate.Done
for {
f, err := sc.framer.ReadFrame()
select {
- case sc.readFrameCh <- readFrameResult{f, err, gate.Done}:
+ case sc.readFrameCh <- readFrameResult{f, err, gateDone}:
case <-sc.doneServing:
return
}