]> Cypherpunks repositories - gostls13.git/commit
[dev.link] cmd/link/internal/loader: add PkgNone resolver cache
authorThan McIntosh <thanm@google.com>
Thu, 24 Oct 2019 15:59:49 +0000 (11:59 -0400)
committerThan McIntosh <thanm@google.com>
Fri, 25 Oct 2019 17:15:50 +0000 (17:15 +0000)
commit2e2ef666b4d0bf0e86aaa3afbef7fc17f34232e6
tree6e82fdbe434d5061038087c4b84ab0d2d41810f5
parent376ef734a7d2cec8764ec34ab51902028101b630
[dev.link] cmd/link/internal/loader: add PkgNone resolver cache

Add a cache for the loader.Loader.resolve() method to use when
looking mapping local PkgNone symbols to global symbol indices.
This helps avoid repeated map lookups during deadcode and other
early phases of the linker when we haven't fully read in all
of object file symbols. Benchstat numbers:

name                      old time/op       new time/op       delta
LinkCompiler                    1.97s ±13%        1.67s ± 8%  -15.34%  (p=0.000 n=20+20)
LinkWithoutDebugCompiler        1.48s ±12%        1.21s ±11%  -18.14%  (p=0.000 n=20+20)

name                      old user-time/op  new user-time/op  delta
LinkCompiler                    2.19s ± 9%        2.04s ±17%   -6.98%  (p=0.002 n=19+20)
LinkWithoutDebugCompiler        1.29s ±13%        1.20s ±13%   -7.70%  (p=0.000 n=20+20)

Change-Id: I4b0b05c8208ee44ee9405b24774b84443e486831
Reviewed-on: https://go-review.googlesource.com/c/go/+/203197
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
src/cmd/link/internal/loader/loader.go