diff options
| author | Jeremy Faller <jeremy@golang.org> | 2020-09-28 14:11:02 -0400 |
|---|---|---|
| committer | Jeremy Faller <jeremy@golang.org> | 2020-09-30 19:34:13 +0000 |
| commit | e674b7703e48e357cd46939413620f21cb84027d (patch) | |
| tree | bc66c6256519c1e5f166d9d9fe05719ca13a869d /src | |
| parent | 3ab22052fbe784088cf8e4edf686707c54f51cf2 (diff) | |
| download | go-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.go | 10 |
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) |
