• Brad Fitzpatrick's avatar
    http2/hpack: reduce memory for huffman decoding table · 32f9bdbd
    Brad Fitzpatrick authored
    Reduces process-wide heap (inuse_space) by 60kB by using a pointer to
    a fixed-sized array instead of a slice of a fixed size.
    
    Before:
    119.44kB 23.43% 23.43%   147.88kB 29.01%  golang.org/x/net/http2/hpack.addDecoderNode
    
    After:
     59.72kB 13.28% 39.85%    87.94kB 19.56%  golang.org/x/net/http2/hpack.addDecoderNode
    
    (This is all work from an init func in http2/hpack)
    
    Doesn't seem to affect runtime performance.
    
    Measured with:
    
    $ cat huffman_test.go
    package main
    
    import (
            "testing"
    
            _ "golang.org/x/net/http2"
            )
    
    func TestMem(t *testing.T) {}
    
    $ GODEBUG=memprofilerate=1 go test -memprofilerate=1 -memprofile=mem.prof -v .
    === RUN   TestMem
    --- PASS: TestMem (0.00s)
    PASS
    ok      huffmem 0.052s
    
    $ go tool pprof --inuse_space mem.prof
    
    Change-Id: I5e56a5a2682f1063c955b342b37e97ca4c303dab
    Reviewed-on: https://go-review.googlesource.com/127235Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
    32f9bdbd
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...