• Martin Möhrmann's avatar
    cmd/compile: specialize map creation for small hint sizes · fbfc2031
    Martin Möhrmann authored
    Handle make(map[any]any) and make(map[any]any, hint) where
    hint <= BUCKETSIZE special to allow for faster map initialization
    and to improve binary size by using runtime calls with fewer arguments.
    
    Given hint is smaller or equal to BUCKETSIZE in which case
    overLoadFactor(hint, 0)  is false and no buckets would be allocated by makemap:
    * If hmap needs to be allocated on the stack then only hmap's hash0
      field needs to be initialized and no call to makemap is needed.
    * If hmap needs to be allocated on the heap then a new special
      makehmap function will allocate hmap and intialize hmap's
      hash0 field.
    
    Reduces size of the godoc by ~36kb.
    
    AMD64
    name         old time/op    new time/op    delta
    NewEmptyMap    16.6ns ± 2%     5.5ns ± 2%  -66.72%  (p=0.000 n=10+10)
    NewSmallMap    64.8ns ± 1%    56.5ns ± 1%  -12.75%  (p=0.000 n=9+10)
    
    Updates #6853
    
    Change-Id: I624e90da6775afaa061178e95db8aca674f44e9b
    Reviewed-on: https://go-review.googlesource.com/61190
    Run-TryBot: Martin Möhrmann <moehrmann@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarKeith Randall <khr@golang.org>
    fbfc2031
Name
Last commit
Last update
..
addr2line Loading commit data...
api Loading commit data...
asm Loading commit data...
buildid Loading commit data...
cgo Loading commit data...
compile Loading commit data...
cover Loading commit data...
dist Loading commit data...
doc Loading commit data...
fix Loading commit data...
go Loading commit data...
gofmt Loading commit data...
internal Loading commit data...
link Loading commit data...
nm Loading commit data...
objdump Loading commit data...
pack Loading commit data...
pprof Loading commit data...
trace Loading commit data...
vendor Loading commit data...
vet Loading commit data...