Browse Source

http2: remove unnecessary TODO for trailer keys allocation

strings.Join has two allocations:
(1) []byte intermediate
(2) final string conversion
The comma-separated keys are ultimately stored in hpack.HeaderField.Value
as a string so (2) is not wasteful. Because strings.Join is used so heavily
I assume its implementation is optimal - (1) is necessary.
Therefore, short of refactoring hpack.HeaderField's Value type, the status quo
seems optimal.

This TODO appears to have been copy-pasted from net/http/transfer.go
However, the two cases are different. transfer.go has two allocations
in addition to strings.Join: concatenation with literals and converting
string to bytes in io.WriteString.

Change-Id: I292203a6535dd2774f5bf45e7280b89aabb5d78d
Reviewed-on: https://go-review.googlesource.com/34626
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Meir Fischer 9 years ago
parent
commit
69d4b8aa71
1 changed files with 0 additions and 2 deletions
  1. 0 2
      http2/transport.go

+ 0 - 2
http2/transport.go

@@ -658,8 +658,6 @@ func commaSeparatedTrailers(req *http.Request) (string, error) {
 	}
 	if len(keys) > 0 {
 		sort.Strings(keys)
-		// TODO: could do better allocation-wise here, but trailers are rare,
-		// so being lazy for now.
 		return strings.Join(keys, ","), nil
 	}
 	return "", nil