• Dmitry Vyukov's avatar
    cmd/gc: allocate non-escaping maps on stack · b3be360f
    Dmitry Vyukov authored
    Extend escape analysis to make(map[k]v).
    If it does not escape, allocate temp buffer for hmap and one bucket on stack.
    
    There are 75 cases of non-escaping maps in std lib.
    
    benchmark                                    old allocs     new allocs     delta
    BenchmarkConcurrentStmtQuery                 16161          15161          -6.19%
    BenchmarkConcurrentTxQuery                   17658          16658          -5.66%
    BenchmarkConcurrentTxStmtQuery               16157          15156          -6.20%
    BenchmarkConcurrentRandom                    13637          13114          -3.84%
    BenchmarkManyConcurrentQueries               22             20             -9.09%
    BenchmarkDecodeComplex128Slice               250            188            -24.80%
    BenchmarkDecodeFloat64Slice                  250            188            -24.80%
    BenchmarkDecodeInt32Slice                    250            188            -24.80%
    BenchmarkDecodeStringSlice                   2250           2188           -2.76%
    BenchmarkNewEmptyMap                         1              0              -100.00%
    BenchmarkNewSmallMap                         2              0              -100.00%
    
    benchmark                old ns/op     new ns/op     delta
    BenchmarkNewEmptyMap     124           55.7          -55.08%
    BenchmarkNewSmallMap     317           148           -53.31%
    
    benchmark                old allocs     new allocs     delta
    BenchmarkNewEmptyMap     1              0              -100.00%
    BenchmarkNewSmallMap     2              0              -100.00%
    
    benchmark                old bytes     new bytes     delta
    BenchmarkNewEmptyMap     48            0             -100.00%
    BenchmarkNewSmallMap     192           0             -100.00%
    
    Fixes #5449
    
    Change-Id: I24fa66f949d2f138885d9e66a0d160240dc9e8fa
    Reviewed-on: https://go-review.googlesource.com/3508Reviewed-by: 's avatarKeith Randall <khr@golang.org>
    Run-TryBot: Dmitry Vyukov <dvyukov@google.com>
    b3be360f
Name
Last commit
Last update
..
5a Loading commit data...
5g Loading commit data...
5l Loading commit data...
6a Loading commit data...
6g Loading commit data...
6l Loading commit data...
8a Loading commit data...
8g Loading commit data...
8l Loading commit data...
9a Loading commit data...
9g Loading commit data...
9l Loading commit data...
addr2line Loading commit data...
api Loading commit data...
cc Loading commit data...
cgo Loading commit data...
dist Loading commit data...
fix Loading commit data...
gc Loading commit data...
go Loading commit data...
gofmt Loading commit data...
internal Loading commit data...
ld Loading commit data...
link Loading commit data...
nm Loading commit data...
objdump Loading commit data...
pack Loading commit data...
pprof Loading commit data...
yacc Loading commit data...