• Brad Fitzpatrick's avatar
    http2/hpack: lazily build huffman table on first use · 22bb95c5
    Brad Fitzpatrick authored
    This generated 120 kB on the heap before at init, regardless of
    whether somebody used http2. Worse, because we vendored it into std,
    users would have two copies, for about 256 kB of memory. After CL
    127235 that went down to 60 kB per copy, so 120 kB for a binary using
    golang.org/x/net/http2 explicitly.
    
    With this, it goes to 0 until one of the two copies in the binary
    actually uses one of the http2 packages.
    
    I wasn't able to measure any difference with the Once.Do in the decode
    path:
    
    name             old time/op    new time/op    delta
    HuffmanDecode-4     732ns ± 8%     707ns ± 3%   ~            (p=0.268 n=10+9)
    
    (admittedly noisy)
    
    Change-Id: I6c1065abc0c3458f3cb69e0f678978267ff35ea2
    Reviewed-on: https://go-review.googlesource.com/127275
    Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
    22bb95c5
Name
Last commit
Last update
bpf Loading commit data...
context Loading commit data...
dict Loading commit data...
dns/dnsmessage Loading commit data...
html Loading commit data...
http Loading commit data...
http2 Loading commit data...
icmp Loading commit data...
idna Loading commit data...
internal Loading commit data...
ipv4 Loading commit data...
ipv6 Loading commit data...
lif Loading commit data...
nettest Loading commit data...
netutil Loading commit data...
proxy Loading commit data...
publicsuffix Loading commit data...
route Loading commit data...
trace Loading commit data...
webdav Loading commit data...
websocket Loading commit data...
xsrftoken Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTING.md Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README.md Loading commit data...
codereview.cfg Loading commit data...