]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/vet/all: use -dolinkobj=false to speed up runs
authorJosh Bleecher Snyder <josharian@gmail.com>
Wed, 22 Feb 2017 20:47:52 +0000 (12:47 -0800)
committerJosh Bleecher Snyder <josharian@gmail.com>
Thu, 23 Feb 2017 07:12:48 +0000 (07:12 +0000)
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 <josharian@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/vet/all/main.go

index 01f24a67d778b86d8b6dac2fc0461fdca3a7f4b2..b955d8e8908417a50c0ae11ba5c4c45e4188245c 100644 (file)
@@ -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 {