From: Josh Bleecher Snyder Date: Sat, 2 Mar 2019 19:14:33 +0000 (-0800) Subject: os/exec: provide map size hint in dedupEnvCase X-Git-Tag: go1.13beta1~1249 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=beadf433c37498dafc6748cc510eeab2636b5be3;p=gostls13.git os/exec: provide map size hint in dedupEnvCase The common case is that most env vars are distinct; optimize for that. name old time/op new time/op delta ExecEcho-8 2.16ms ± 3% 2.14ms ± 1% ~ (p=0.315 n=10+10) name old alloc/op new alloc/op delta ExecEcho-8 7.87kB ± 0% 6.35kB ± 0% -19.31% (p=0.000 n=9+10) name old allocs/op new allocs/op delta ExecEcho-8 72.0 ± 0% 69.0 ± 0% -4.17% (p=0.000 n=10+10) Change-Id: I42bb696c6862f2ea12c5cbd2f24c64336a7a759a Reviewed-on: https://go-review.googlesource.com/c/164960 Run-TryBot: Josh Bleecher Snyder TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- diff --git a/src/os/exec/exec.go b/src/os/exec/exec.go index 1aa3ab93dc..7b2b2ebd92 100644 --- a/src/os/exec/exec.go +++ b/src/os/exec/exec.go @@ -713,7 +713,7 @@ func dedupEnv(env []string) []string { // If caseInsensitive is true, the case of keys is ignored. func dedupEnvCase(caseInsensitive bool, env []string) []string { out := make([]string, 0, len(env)) - saw := map[string]int{} // key => index into out + saw := make(map[string]int, len(env)) // key => index into out for _, kv := range env { eq := strings.Index(kv, "=") if eq < 0 {