]> Cypherpunks repositories - gostls13.git/commit
mime: speed up ParseMediaType
authorJulien Cretel <jub0bsinthecloud@gmail.com>
Tue, 22 Apr 2025 16:49:42 +0000 (16:49 +0000)
committerGopher Robot <gobot@golang.org>
Sat, 26 Apr 2025 15:01:54 +0000 (08:01 -0700)
commitf9ce1dddc264cb30e68bfedbabf159b32bb6a719
tree2e47c97b73cb87466e94e1b5f2ad728a20499dca
parent7a2689b152785010ee2013fb220a048bfe31e49f
mime: speed up ParseMediaType

Add benchmarks for ParseMediaType.

Eschew UTF-8 decoding and strings.IndexFunc where possible, and rely
on 128-bit bitmaps instead. Eliminate some bounds checks.

Some benchmark results (no changes to allocations):

goos: darwin
goarch: amd64
pkg: mime
cpu: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
                      │     old     │                 new                 │
                      │   sec/op    │   sec/op     vs base                │
ParseMediaType-8        71.75µ ± 0%   55.53µ ± 0%  -22.60% (p=0.000 n=20)
ParseMediaTypeBogus-8   5.330µ ± 0%   3.603µ ± 0%  -32.41% (p=0.000 n=20)
geomean                 19.56µ        14.14µ       -27.67%

Change-Id: I324c9990fe43581484916ecff61ca6c708467a89
GitHub-Last-Rev: e2293d64b3852722bef920169eaa44e7ded3111c
GitHub-Pull-Request: golang/go#73436
Reviewed-on: https://go-review.googlesource.com/c/go/+/666655
Reviewed-by: Jorropo <jorropo.pgm@gmail.com>
Reviewed-by: Junyang Shao <shaojunyang@google.com>
Reviewed-by: Sean Liao <sean@liao.dev>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Sean Liao <sean@liao.dev>
src/mime/grammar.go
src/mime/mediatype.go
src/mime/mediatype_test.go