Small runtime win:
Stats for darwin, building cmd/compile:
Asmb 20.7ms ±14% 18.3ms ±14% -11.54% (p=0.002 n=10+10)
TotalTime 365ms ±10% 351ms ± 2% ~ (p=0.211 n=10+9)
Change-Id: Ia8afdf6948111d59b0c89e52cb50557a10f33c40
Reviewed-on: https://go-review.googlesource.com/c/go/+/257964
Trust: Jeremy Faller <jeremy@golang.org>
Run-TryBot: Jeremy Faller <jeremy@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
"cmd/internal/objabi"
"cmd/internal/sys"
"cmd/link/internal/benchmark"
+ "cmd/link/internal/loader"
"flag"
"log"
"os"
"runtime"
"runtime/pprof"
"strings"
+ "sync"
)
var (
bench.Start("Asmb")
asmb(ctxt)
// Generate large symbols.
+ var wg sync.WaitGroup
for s, f := range ctxt.generatorSyms {
- f(ctxt, s)
+ wg.Add(1)
+ go func(f generatorFunc, s loader.Sym) {
+ defer wg.Done()
+ f(ctxt, s)
+ }(f, s)
}
+ wg.Wait()
bench.Start("Asmb2")
asmb2(ctxt)