commit | 0a6cdd775a6812169f1b0e5c6bfb27d35d50cbef | [log] [tgz] |
---|---|---|
author | Russ Cox <rsc@golang.org> | Fri Jun 15 10:40:48 2018 -0400 |
committer | Russ Cox <rsc@golang.org> | Fri Jun 15 20:32:29 2018 +0000 |
tree | 370a24762b5ea19e5a43961c2483548d8adb097d | |
parent | 184f864c4167d0e2923eb90fe611923812255ec4 [diff] |
cmd/go: parallelize module load operations Loading information about modules not yet cached on the local system is dominated by network I/O time. Load the information in parallel to overlap this I/O. As a test case, I am using a real (not synthetic) but unpublished repo with 90 transitive dependencies. In that repo, I've measured the time it takes for rm -rf $GOPATH/src/v && vgo mod -vendor Before this CL, that operation averages about 220 seconds. Adding caching of already-looked-up information in modfetch/repo.go drops the average time to about 170 seconds. Changing the MVS requirement scans to run in parallel drops the average time to about 65 seconds. This CL includes Bryan's comments for mvs.Reqs from CL 116235, extended to document the new parallel access requirements. This CL also adds the build -x flag to 'vgo mod' so that it's possible to see all the git commands being executed. Fixes golang/go#24316. Change-Id: Ia8228e850c6c60d8fa80d2fb3b6773c70e86137b Reviewed-on: https://go-review.googlesource.com/119055 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This repository holds a prototype of what the go command might look like with integrated support for package versioning.
See research.swtch.com/vgo for documents about the design.
Use go get -u golang.org/x/vgo
.
You can also manually git clone the repository to $GOPATH/src/golang.org/x/vgo
.
See CONTRIBUTING.md.
This is still a very early prototype. You are likely to run into bugs. Please file bugs in the main Go issue tracker, golang.org/issue, and put the prefix x/vgo:
in the issue title.
Thank you.