• LE Manh Cuong's avatar
    cmd/compile: support more length types for slice extension optimization · ec4e8517
    LE Manh Cuong authored
    golang.org/cl/109517 optimized the compiler to avoid the allocation for make in
    append(x, make([]T, y)...). This was only implemented for the case that y has type int.
    
    This change extends the optimization to trigger for all integer types where the value
    is known at compile time to fit into an int.
    
    name             old time/op    new time/op    delta
    ExtendInt-12        106ns ± 4%     106ns ± 0%      ~     (p=0.351 n=10+6)
    ExtendUint64-12    1.03µs ± 5%    0.10µs ± 4%   -90.01%  (p=0.000 n=9+10)
    
    name             old alloc/op   new alloc/op   delta
    ExtendInt-12        0.00B          0.00B           ~     (all equal)
    ExtendUint64-12    13.6kB ± 0%     0.0kB       -100.00%  (p=0.000 n=10+10)
    
    name             old allocs/op  new allocs/op  delta
    ExtendInt-12         0.00           0.00           ~     (all equal)
    ExtendUint64-12      1.00 ± 0%      0.00       -100.00%  (p=0.000 n=10+10)
    
    Updates #29785
    
    Change-Id: Ief7760097c285abd591712da98c5b02bc3961fcd
    Reviewed-on: https://go-review.googlesource.com/c/go/+/182559
    Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarKeith Randall <khr@golang.org>
    ec4e8517
issue4085b.go 2.88 KB