• sergey's avatar
    net/http: speed up parsing of Cookie headers · 6b7114b9
    sergey authored
    Parse the headers without splitting them upfront to reduce
    memory allocations.
    
    For non-pathological Cookie headers we can make
    a good estimate of the number of cookies in there and preallocate
    the slice of cookies
    
    name              old time/op    new time/op    delta
    CookieString-4      1.73µs ± 2%    1.70µs ± 5%     ~     (p=0.841 n=5+5)
    ReadSetCookies-4    6.09µs ± 3%    5.93µs ± 3%     ~     (p=0.095 n=5+5)
    ReadCookies-4       7.63µs ± 1%    6.41µs ± 4%  -15.99%  (p=0.008 n=5+5)
    
    name              old alloc/op   new alloc/op   delta
    CookieString-4        360B ± 0%      360B ± 0%     ~     (all equal)
    ReadSetCookies-4      976B ± 0%      976B ± 0%     ~     (all equal)
    ReadCookies-4       2.17kB ± 0%    1.84kB ± 0%  -15.13%  (p=0.008 n=5+5)
    
    name              old allocs/op  new allocs/op  delta
    CookieString-4        5.00 ± 0%      5.00 ± 0%     ~     (all equal)
    ReadSetCookies-4      15.0 ± 0%      15.0 ± 0%     ~     (all equal)
    ReadCookies-4         16.0 ± 0%      11.0 ± 0%  -31.25%  (p=0.008 n=5+5)
    
    Change-Id: Ica1ca0d40c0d8d275134d1dfafb73f1082115826
    Reviewed-on: https://go-review.googlesource.com/c/go/+/163617Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
    Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    6b7114b9
cookie.go 10.6 KB