• Josh Bleecher Snyder's avatar
    syscall: optimize SlicePtrFromStrings · 06c86e0f
    Josh Bleecher Snyder authored
    Instead of allocating a byte slice for every string,
    calculated the required size and create
    a single slice big enough to hold all of them.
    As an added benefit, any error encountered
    will now be returned before allocations occur.
    
    os/exec package benchmarks:
    
    name        old time/op    new time/op    delta
    ExecEcho-8    2.14ms ± 1%    2.14ms ± 3%     ~     (p=0.842 n=10+9)
    
    name        old alloc/op   new alloc/op   delta
    ExecEcho-8    6.35kB ± 0%    6.18kB ± 0%   -2.65%  (p=0.000 n=10+10)
    
    name        old allocs/op  new allocs/op  delta
    ExecEcho-8      69.0 ± 0%      36.0 ± 0%  -47.83%  (p=0.000 n=10+10)
    
    Change-Id: I84118d8473037d873f73903d4e4f6ed14f531ce7
    Reviewed-on: https://go-review.googlesource.com/c/164961
    Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
    06c86e0f
exec_unix.go 8.1 KB