]> Cypherpunks repositories - gostls13.git/commit
net/http: fewer allocations in chunkWriter.WriteHeader
authorBrad Fitzpatrick <bradfitz@golang.org>
Tue, 2 Apr 2013 23:27:23 +0000 (16:27 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Tue, 2 Apr 2013 23:27:23 +0000 (16:27 -0700)
commitbabbd55e5d0c940b8c527ef27261ab7f87e42f17
tree159f209d4612348e62aeb7a38a51534fb30c60b0
parent3d5daa23198f4b7ee71dd7647d5d061e1c883fce
net/http: fewer allocations in chunkWriter.WriteHeader

It was unnecessarily cloning and then mutating a map that had
a very short lifetime (just that function).

No new tests, because they were added in revision 833bf2ef1527
(TestHeaderToWire). The benchmarks below are from the earlier
commit, revision 52e3407d.

I noticed this inefficiency when reviewing a change Peter Buhr
is looking into, which will also use these benchmarks.

benchmark                         old ns/op    new ns/op    delta
BenchmarkServerHandlerTypeLen         12547        12325   -1.77%
BenchmarkServerHandlerNoLen           12466        11167  -10.42%
BenchmarkServerHandlerNoType          12699        11800   -7.08%
BenchmarkServerHandlerNoHeader        11901         9210  -22.61%

benchmark                        old allocs   new allocs    delta
BenchmarkServerHandlerTypeLen            21           20   -4.76%
BenchmarkServerHandlerNoLen              20           18  -10.00%
BenchmarkServerHandlerNoType             20           18  -10.00%
BenchmarkServerHandlerNoHeader           17           13  -23.53%

benchmark                         old bytes    new bytes    delta
BenchmarkServerHandlerTypeLen          1930         1913   -0.88%
BenchmarkServerHandlerNoLen            1912         1879   -1.73%
BenchmarkServerHandlerNoType           1912         1878   -1.78%
BenchmarkServerHandlerNoHeader         1491         1086  -27.16%

R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/8268046
src/pkg/net/http/server.go