1
0
mirror of https://github.com/golang/go synced 2024-11-24 19:50:18 -07:00

cmd/link: Preallocate Lsym map

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>
This commit is contained in:
Shahar Kohanim 2016-02-29 12:19:26 +02:00 committed by David Crawshaw
parent 21f2cb60ea
commit e0b04fa508

View File

@ -58,7 +58,8 @@ var headers = []struct {
func linknew(arch *LinkArch) *Link { func linknew(arch *LinkArch) *Link {
ctxt := new(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.Arch = arch
ctxt.Version = obj.HistVersion ctxt.Version = obj.HistVersion
ctxt.Goroot = obj.Getgoroot() ctxt.Goroot = obj.Getgoroot()