• sergey's avatar
    net/http: reduce allocs on write cookie · cf99535e
    sergey authored
    Pregrow buffer to reduce allocs on building cookie string.
    We calc cookie name value and domain size (most distributed by value) and
    add 110 extra characters allows to write most cookie attributes
    without additional allocations in most cases.
    
    name              old time/op    new time/op    delta
    CookieString-4      1.65µs ± 3%    1.27µs ± 2%  -23.01%  (p=0.008 n=5+5)
    ReadSetCookies-4    5.78µs ± 4%    5.67µs ± 3%     ~     (p=0.310 n=5+5)
    ReadCookies-4       7.12µs ± 4%    7.04µs ± 3%     ~     (p=0.690 n=5+5)
    
    name              old alloc/op   new alloc/op   delta
    CookieString-4        360B ± 0%      144B ± 0%  -60.00%  (p=0.008 n=5+5)
    ReadSetCookies-4      976B ± 0%      976B ± 0%     ~     (all equal)
    ReadCookies-4       2.17kB ± 0%    2.17kB ± 0%     ~     (all equal)
    
    name              old allocs/op  new allocs/op  delta
    CookieString-4        5.00 ± 0%      1.00 ± 0%  -80.00%  (p=0.008 n=5+5)
    ReadSetCookies-4      15.0 ± 0%      15.0 ± 0%     ~     (all equal)
    ReadCookies-4         16.0 ± 0%      16.0 ± 0%     ~     (all equal)
    
    Change-Id: I50defac954a135b785b3551342b00878429b3d7f
    Reviewed-on: https://go-review.googlesource.com/c/go/+/163017Reviewed-by: default avatarVolker Dobler <dr.volker.dobler@gmail.com>
    Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
    Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
    cf99535e
cookie.go 10.5 KB