]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: Preallocate Lsym map
authorShahar Kohanim <skohanim@gmail.com>
Mon, 29 Feb 2016 10:19:26 +0000 (12:19 +0200)
committerDavid Crawshaw <crawshaw@golang.org>
Mon, 29 Feb 2016 17:30:13 +0000 (17:30 +0000)
Preallocate ~2MB for Lsym map (size calculation from http://play.golang.org/p/9L7F5naXRr).
Reduces best of 10 link time of cmd/go by ~4%.
On cmd/go max resident size unaffected, on println hello world max resident size grows by 4mb from 18mb->22mb. Performance improves in both cases.

tip:  real  0m1.283s user  0m1.502s sys 0m0.144s
this: real  0m1.341s user  0m1.598s sys 0m0.136s

Change-Id: I4a95e45fe552f1f64f53e868421b9f45a34f8b96
Reviewed-on: https://go-review.googlesource.com/19979
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
src/cmd/link/internal/ld/sym.go

index 6122b85298b343bd2b547095195731ecdca4fc2b..099243442b6d0ed4d96923058113c2bfe9443084 100644 (file)
@@ -58,7 +58,8 @@ var headers = []struct {
 
 func linknew(arch *LinkArch) *Link {
        ctxt := new(Link)
-       ctxt.Hash = make(map[symVer]*LSym)
+       // Preallocate about 2mb for hash
+       ctxt.Hash = make(map[symVer]*LSym, 100000)
        ctxt.Arch = arch
        ctxt.Version = obj.HistVersion
        ctxt.Goroot = obj.Getgoroot()