aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Faller <jeremy@golang.org>2020-09-28 14:11:02 -0400
committerJeremy Faller <jeremy@golang.org>2020-09-30 19:34:13 +0000
commite674b7703e48e357cd46939413620f21cb84027d (patch)
treebc66c6256519c1e5f166d9d9fe05719ca13a869d /src
parent3ab22052fbe784088cf8e4edf686707c54f51cf2 (diff)
downloadgo-e674b7703e48e357cd46939413620f21cb84027d.tar.xz
[dev.link] cmd/link run generators in parallel
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>
Diffstat (limited to 'src')
-rw-r--r--src/cmd/link/internal/ld/main.go10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/cmd/link/internal/ld/main.go b/src/cmd/link/internal/ld/main.go
index 6f4ccbfb7a..778b0e9245 100644
--- a/src/cmd/link/internal/ld/main.go
+++ b/src/cmd/link/internal/ld/main.go
@@ -36,12 +36,14 @@ import (
"cmd/internal/objabi"
"cmd/internal/sys"
"cmd/link/internal/benchmark"
+ "cmd/link/internal/loader"
"flag"
"log"
"os"
"runtime"
"runtime/pprof"
"strings"
+ "sync"
)
var (
@@ -324,9 +326,15 @@ func Main(arch *sys.Arch, theArch Arch) {
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)