Skip to content

Commit d0c1c58

Browse files
tznealbradfitz
authored andcommitted
http2/hpack: remove pair function and initialize directly
Inlining isn't performed on generated init functions. Removing the pair function and initializing the structs directly saves another 16k on a simple http.ListenAndServe() binary. delta name old new -58 runtime.findfunctab 10471 10413 -0.55% -41 runtime.gcbss 910 869 -4.51% 41 runtime.gcdata 612 653 6.70% -408 runtime.pclntab 1036311 1035903 -0.04% -11711 vendor/golang_org/x/net/http2/hpack.init 12283 572 -95.34% Updates golang/go#6853 Change-Id: Ibccc796fe7403674cf4b4561acf9551d76ff11e8 Reviewed-on: https://go-review.googlesource.com/43190 Run-TryBot: Todd Neal <[email protected]> TryBot-Result: Gobot Gobot <[email protected]> Reviewed-by: Brad Fitzpatrick <[email protected]>
1 parent 0a845cd commit d0c1c58

File tree

1 file changed

+61
-61
lines changed

1 file changed

+61
-61
lines changed

hpack/tables.go

Lines changed: 61 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -132,67 +132,67 @@ func pair(name, value string) HeaderField {
132132
// http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-07#appendix-B
133133
var staticTable = newStaticTable()
134134
var staticTableEntries = [...]HeaderField{
135-
pair(":authority", ""),
136-
pair(":method", "GET"),
137-
pair(":method", "POST"),
138-
pair(":path", "/"),
139-
pair(":path", "/index.html"),
140-
pair(":scheme", "http"),
141-
pair(":scheme", "https"),
142-
pair(":status", "200"),
143-
pair(":status", "204"),
144-
pair(":status", "206"),
145-
pair(":status", "304"),
146-
pair(":status", "400"),
147-
pair(":status", "404"),
148-
pair(":status", "500"),
149-
pair("accept-charset", ""),
150-
pair("accept-encoding", "gzip, deflate"),
151-
pair("accept-language", ""),
152-
pair("accept-ranges", ""),
153-
pair("accept", ""),
154-
pair("access-control-allow-origin", ""),
155-
pair("age", ""),
156-
pair("allow", ""),
157-
pair("authorization", ""),
158-
pair("cache-control", ""),
159-
pair("content-disposition", ""),
160-
pair("content-encoding", ""),
161-
pair("content-language", ""),
162-
pair("content-length", ""),
163-
pair("content-location", ""),
164-
pair("content-range", ""),
165-
pair("content-type", ""),
166-
pair("cookie", ""),
167-
pair("date", ""),
168-
pair("etag", ""),
169-
pair("expect", ""),
170-
pair("expires", ""),
171-
pair("from", ""),
172-
pair("host", ""),
173-
pair("if-match", ""),
174-
pair("if-modified-since", ""),
175-
pair("if-none-match", ""),
176-
pair("if-range", ""),
177-
pair("if-unmodified-since", ""),
178-
pair("last-modified", ""),
179-
pair("link", ""),
180-
pair("location", ""),
181-
pair("max-forwards", ""),
182-
pair("proxy-authenticate", ""),
183-
pair("proxy-authorization", ""),
184-
pair("range", ""),
185-
pair("referer", ""),
186-
pair("refresh", ""),
187-
pair("retry-after", ""),
188-
pair("server", ""),
189-
pair("set-cookie", ""),
190-
pair("strict-transport-security", ""),
191-
pair("transfer-encoding", ""),
192-
pair("user-agent", ""),
193-
pair("vary", ""),
194-
pair("via", ""),
195-
pair("www-authenticate", ""),
135+
HeaderField{Name: ":authority"},
136+
HeaderField{Name: ":method", Value: "GET"},
137+
HeaderField{Name: ":method", Value: "POST"},
138+
HeaderField{Name: ":path", Value: "/"},
139+
HeaderField{Name: ":path", Value: "/index.html"},
140+
HeaderField{Name: ":scheme", Value: "http"},
141+
HeaderField{Name: ":scheme", Value: "https"},
142+
HeaderField{Name: ":status", Value: "200"},
143+
HeaderField{Name: ":status", Value: "204"},
144+
HeaderField{Name: ":status", Value: "206"},
145+
HeaderField{Name: ":status", Value: "304"},
146+
HeaderField{Name: ":status", Value: "400"},
147+
HeaderField{Name: ":status", Value: "404"},
148+
HeaderField{Name: ":status", Value: "500"},
149+
HeaderField{Name: "accept-charset"},
150+
HeaderField{Name: "accept-encoding", Value: "gzip, deflate"},
151+
HeaderField{Name: "accept-language"},
152+
HeaderField{Name: "accept-ranges"},
153+
HeaderField{Name: "accept"},
154+
HeaderField{Name: "access-control-allow-origin"},
155+
HeaderField{Name: "age"},
156+
HeaderField{Name: "allow"},
157+
HeaderField{Name: "authorization"},
158+
HeaderField{Name: "cache-control"},
159+
HeaderField{Name: "content-disposition"},
160+
HeaderField{Name: "content-encoding"},
161+
HeaderField{Name: "content-language"},
162+
HeaderField{Name: "content-length"},
163+
HeaderField{Name: "content-location"},
164+
HeaderField{Name: "content-range"},
165+
HeaderField{Name: "content-type"},
166+
HeaderField{Name: "cookie"},
167+
HeaderField{Name: "date"},
168+
HeaderField{Name: "etag"},
169+
HeaderField{Name: "expect"},
170+
HeaderField{Name: "expires"},
171+
HeaderField{Name: "from"},
172+
HeaderField{Name: "host"},
173+
HeaderField{Name: "if-match"},
174+
HeaderField{Name: "if-modified-since"},
175+
HeaderField{Name: "if-none-match"},
176+
HeaderField{Name: "if-range"},
177+
HeaderField{Name: "if-unmodified-since"},
178+
HeaderField{Name: "last-modified"},
179+
HeaderField{Name: "link"},
180+
HeaderField{Name: "location"},
181+
HeaderField{Name: "max-forwards"},
182+
HeaderField{Name: "proxy-authenticate"},
183+
HeaderField{Name: "proxy-authorization"},
184+
HeaderField{Name: "range"},
185+
HeaderField{Name: "referer"},
186+
HeaderField{Name: "refresh"},
187+
HeaderField{Name: "retry-after"},
188+
HeaderField{Name: "server"},
189+
HeaderField{Name: "set-cookie"},
190+
HeaderField{Name: "strict-transport-security"},
191+
HeaderField{Name: "transfer-encoding"},
192+
HeaderField{Name: "user-agent"},
193+
HeaderField{Name: "vary"},
194+
HeaderField{Name: "via"},
195+
HeaderField{Name: "www-authenticate"},
196196
}
197197

198198
func newStaticTable() *headerFieldTable {

0 commit comments

Comments
 (0)