]> Cypherpunks repositories - gostls13.git/commit
os/exec: preallocate for Cmd.childFiles
authorDaniel Martí <mvdan@mvdan.cc>
Sun, 3 Mar 2019 15:30:24 +0000 (15:30 +0000)
committerBrad Fitzpatrick <bradfitz@golang.org>
Sun, 3 Mar 2019 17:45:46 +0000 (17:45 +0000)
commit59712fd03d37c0d17cce9f6605a9cc87fa0d4870
tree41c4383492f622d75e4ca7e8c6eb0d62e0084707
parentec01d8f74bf60c0fe52335bf8bcf475e3653822d
os/exec: preallocate for Cmd.childFiles

We're always going to add stdin, stdout, and stderr to childFiles, so
its length will be at least three. The final length will be those three
elements plus however many files were given via ExtraFiles.

Allocate for that final length directly, saving two slice growth allocs
in the common case where ExtraFiles is empty.

name        old time/op    new time/op    delta
ExecEcho-8     435µs ± 0%     435µs ± 0%    ~     (p=0.394 n=6+6)

name        old alloc/op   new alloc/op   delta
ExecEcho-8    6.39kB ± 0%    6.37kB ± 0%  -0.39%  (p=0.002 n=6+6)

name        old allocs/op  new allocs/op  delta
ExecEcho-8      36.0 ± 0%      34.0 ± 0%  -5.56%  (p=0.002 n=6+6)

Change-Id: Ib702c0da1e43f0a55ed937af6d45fca6a170e8f3
Reviewed-on: https://go-review.googlesource.com/c/164898
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/os/exec/exec.go