commit | 0a24555f5cc06e8caf23d84a4f8b7102dcab838e | [log] [tgz] |
---|---|---|
author | Julien Cretel <jub0bsinthecloud@gmail.com> | Wed Apr 10 23:08:43 2024 +0000 |
committer | Damien Neil <dneil@google.com> | Mon Apr 15 20:43:53 2024 +0000 |
tree | de6eae609a1121f28c8754c9143946e961dc3c6a | |
parent | ec05fdcd71141c885f3fb84c41d1c692f094ccbe [diff] |
http/httpguts: speed up ValidHeaderFieldName Eliminate bounds checks and eschews UTF-8 decoding in ValidHeaderFieldName, thereby doubling its speed without introducing any allocations. Also eliminate bounds checks in IsTokenRune. Add tests and benchmarks for both ValidHeaderFieldName and IsTokenRune. goos: darwin goarch: amd64 pkg: golang.org/x/net/http/httpguts cpu: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz │ before │ after │ │ sec/op │ sec/op vs base │ IsTokenRune-8 315.2n ± 0% 316.2n ± 1% ~ (p=0.245 n=20) ValidHeaderFieldName-8 62.77n ± 0% 29.16n ± 0% -53.55% (p=0.000 n=20) geomean 140.7n 96.02n -31.73% │ before │ after │ │ B/op │ B/op vs base │ IsTokenRune-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=20) ValidHeaderFieldName-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=20) geomean ² +0.00% │ before │ after │ │ allocs/op │ allocs/op vs base │ IsTokenRune-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=20) ValidHeaderFieldName-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=20) geomean ² +0.00% Fixes golang/go#66700 Change-Id: Ia3ea80e5f0d173e3a69eb7429023587fd7bc5933 GitHub-Last-Rev: 1f1d25d1ecc34dca5d573c89d673dc634520df33 GitHub-Pull-Request: golang/net#207 Reviewed-on: https://go-review.googlesource.com/c/net/+/578075 Run-TryBot: Emmanuel Odeke <emmanuel@orijtech.com> Reviewed-by: Damien Neil <dneil@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This repository holds supplementary Go networking libraries.
The easiest way to install is to run go get -u golang.org/x/net
. You can also manually git clone the repository to $GOPATH/src/golang.org/x/net
.
This repository uses Gerrit for code changes. To learn how to submit changes to this repository, see https://golang.org/doc/contribute.html. The main issue tracker for the net repository is located at https://github.com/golang/go/issues. Prefix your issue with “x/net:” in the subject line, so it is easy to find.