From 731fd009f0acef70d939f3cb62f81a83e3e9e2bb Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Wed, 22 Feb 2017 12:47:52 -0800 Subject: [PATCH] cmd/vet/all: use -dolinkobj=false to speed up runs When running on the host platform, the standard library has almost certainly already been built. However, all other platforms will probably need building. Use the new -dolinkobj=false flag to cmd/compile to only build the export data instead of doing a full compile. Having partial object files could be confusing for people doing subsequent cross-compiles, depending on what happens with #18369. However, cmd/vet/all will mainly be run by builders and core developers, who are probably fairly well-placed to handle any such confusion. This reduces the time on my machine for a cold run of 'go run main.go -all' by almost half: benchmark old ns/op new ns/op delta BenchmarkVetAll 240670814551 130784517074 -45.66% Change-Id: Ieb866ffb2cb714b361b0a6104077652f8eacd166 Reviewed-on: https://go-review.googlesource.com/37385 Run-TryBot: Josh Bleecher Snyder Reviewed-by: Brad Fitzpatrick Reviewed-by: Rob Pike TryBot-Result: Gobot Gobot --- src/cmd/vet/all/main.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cmd/vet/all/main.go b/src/cmd/vet/all/main.go index 01f24a67d7..b955d8e890 100644 --- a/src/cmd/vet/all/main.go +++ b/src/cmd/vet/all/main.go @@ -220,7 +220,11 @@ func (p platform) vet(ncpus int) { // Not installing leads to non-obvious failures due to inability to typecheck. // TODO: If go/loader ever makes it to the standard library, have vet use it, // at which point vet can work off source rather than compiled packages. - cmd := exec.Command(cmdGoPath, "install", "-p", strconv.Itoa(ncpus), "std") + gcflags := "" + if p != hostPlatform { + gcflags = "-dolinkobj=false" + } + cmd := exec.Command(cmdGoPath, "install", "-p", strconv.Itoa(ncpus), "-gcflags="+gcflags, "std") cmd.Env = env out, err := cmd.CombinedOutput() if err != nil { -- 2.50.0