• 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
..
encode.go Loading commit data...
encode_test.go Loading commit data...
hpack.go Loading commit data...
hpack_test.go Loading commit data...
huffman.go Loading commit data...
tables.go Loading commit data...
tables_test.go Loading commit data...