Go: x/tools/cmd/goimports: too slow

Created on 14 Jul 2016  Β·  7Comments  Β·  Source: golang/go

Please answer these questions before submitting your issue. Thanks!

  1. What version of Go are you using (go version)?

go version go1.6.2 darwin/amd64

  1. What operating system and processor architecture are you using (go env)?

GOARCH="amd64" GOBIN="" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" GOPATH="/Users/romeo/code/go" GORACE="" GOROOT="/usr/local/Cellar/go/1.6.2/libexec" GOTOOLDIR="/usr/local/Cellar/go/1.6.2/libexec/pkg/tool/darwin_amd64" GO15VENDOREXPERIMENT="1" CC="clang" GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common" CXX="clang++" CGO_ENABLED="1"

  1. What did you do?
    I've got a repo with a lot of vendored libraries:

```
$ tree vendor -d -L 2
vendor
β”œβ”€β”€ github.com
β”‚Β Β  β”œβ”€β”€ BurntSushi
β”‚Β Β  β”œβ”€β”€ TheThingsNetwork
β”‚Β Β  β”œβ”€β”€ apex
β”‚Β Β  β”œβ”€β”€ boltdb
β”‚Β Β  β”œβ”€β”€ brocaar
β”‚Β Β  β”œβ”€β”€ dgrijalva
β”‚Β Β  β”œβ”€β”€ eclipse
β”‚Β Β  β”œβ”€β”€ fsnotify
β”‚Β Β  β”œβ”€β”€ golang
β”‚Β Β  β”œβ”€β”€ googollee
β”‚Β Β  β”œβ”€β”€ gorilla
β”‚Β Β  β”œβ”€β”€ hashicorp
β”‚Β Β  β”œβ”€β”€ jacobsa
β”‚Β Β  β”œβ”€β”€ labstack
β”‚Β Β  β”œβ”€β”€ magiconair
β”‚Β Β  β”œβ”€β”€ mattn
β”‚Β Β  β”œβ”€β”€ mitchellh
β”‚Β Β  β”œβ”€β”€ rcrowley
β”‚Β Β  β”œβ”€β”€ robertkrimen
β”‚Β Β  β”œβ”€β”€ smartystreets
β”‚Β Β  β”œβ”€β”€ spf13
β”‚Β Β  β”œβ”€β”€ tj
β”‚Β Β  └── valyala
β”œβ”€β”€ golang.org
β”‚Β Β  └── x
β”œβ”€β”€ google.golang.org
β”‚Β Β  β”œβ”€β”€ appengine
β”‚Β Β  β”œβ”€β”€ cloud
β”‚Β Β  └── grpc
└── gopkg.in
β”œβ”€β”€ bsm
β”œβ”€β”€ redis.v3
β”œβ”€β”€ sourcemap.v1
└── yaml.v2

35 directories
```

And now goimports is really slow:

$ time goimports routes/events.go 1>/dev/null goimports routes/events.go > /dev/null 3.45s user 9.69s system 331% cpu 3.964 total

However if I remove the vendored library and get the dependencies into my $GOPATH:

rm -r vendor go get

goimports is really fast again:

$ time goimports routes/events.go 1>/dev/null goimports routes/events.go 1>/dev/null 0.01s user 0.01s system 68% cpu 0.032 total

  1. What did you expect to see?
    Same performance on vendored libs and libs in $GOPATH.
  2. What did you see instead?
    A large performance difference.
FrozenDueToAge

Most helpful comment

Good timing. I was annoyed by goimports' performance recently and started investigating today during the Gophercon hack day. I have a change on my laptop to make things much faster.

It's doing way more work than necessary.

All 7 comments

Good timing. I was annoyed by goimports' performance recently and started investigating today during the Gophercon hack day. I have a change on my laptop to make things much faster.

It's doing way more work than necessary.

Can't wait for the CL.

CL https://golang.org/cl/24941 mentions this issue.

CL https://golang.org/cl/24948 mentions this issue.

CL https://golang.org/cl/24971 mentions this issue.

CL https://golang.org/cl/25001 mentions this issue.

I think it's fast enough to close this now.

Was this page helpful?
0 / 5 - 0 ratings