Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(428)

Issue 8268046: code review 8268046: net/http: fewer allocations in chunkWriter.WriteHeader (Closed)

Can't Edit
Can't Publish+Mail
Start Review
Created:
12 years, 1 month ago by bradfitz
Modified:
12 years, 1 month ago
Reviewers:
CC:
golang-dev, adg
Visibility:
Public.

Description

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%

Patch Set 1 #

Patch Set 2 : diff -r 52e3407d249f https://go.googlecode.com/hg/ #

Patch Set 3 : diff -r 52e3407d249f https://go.googlecode.com/hg/ #

Total comments: 1

Patch Set 4 : diff -r 7f91fab04475 https://go.googlecode.com/hg/ #

Unified diffs Side-by-side diffs Delta from patch set Stats (+89 lines, -43 lines) Patch
M src/pkg/net/http/server.go View 1 2 3 8 chunks +89 lines, -43 lines 0 comments Download

Messages

Total messages: 3
bradfitz
Hello golang-dev@googlegroups.com, I'd like you to review this change to https://go.googlecode.com/hg/
12 years, 1 month ago (2013-04-02 22:56:04 UTC) #1
adg
LGTM https://codereview.appspot.com/8268046/diff/3002/src/pkg/net/http/server.go File src/pkg/net/http/server.go (right): https://codereview.appspot.com/8268046/diff/3002/src/pkg/net/http/server.go#newcode678 src/pkg/net/http/server.go:678: var exclude map[string]bool excludeHeader ?
12 years, 1 month ago (2013-04-02 23:17:10 UTC) #2
bradfitz
12 years, 1 month ago (2013-04-02 23:27:27 UTC) #3
*** Submitted as https://code.google.com/p/go/source/detail?r=64c7c23ad2b9 ***

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://codereview.appspot.com/8268046
Sign in to reply to this message.

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b