b29f5f60c3
Deep completions can take a long time (500ms+) if there are many large, deeply nested structs in scope. To make sure we return completion results in a timely manner we now notice if we have spent "too long" searching for deep completions and reduce the search scope. In particular, our overall completion budget is 100ms. This value is often cited as the longest latency that still feels instantaneous to most people. As we spend 25%, 50%, and 75% of our budget we limit our deep completion candidate search depth to 4, 3, and 2, respectively. If we hit 90% of our budget, we disable deep completions entirely. In my testing, limiting the search scope to 4 normally makes even enormous searches finish in a few milliseconds. Of course, you can have arbitrarily many objects in scope with arbitrarily many fields, so to cover our bases we continue to dial down the search depth as needed. I replaced the "enabled" field with a "maxDepth" field that disables deep search when set to 0. Change-Id: I9b5a07de70709895c065503ae6082d1ea615d1af Reviewed-on: https://go-review.googlesource.com/c/tools/+/190978 Run-TryBot: Rebecca Stambler <rstambler@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Cottrell <iancottrell@google.com> |
||
---|---|---|
benchmark/parse | ||
blog | ||
cmd | ||
container/intsets | ||
cover | ||
go | ||
godoc | ||
gopls | ||
imports | ||
internal | ||
playground | ||
present | ||
refactor | ||
.gitattributes | ||
.gitignore | ||
AUTHORS | ||
codereview.cfg | ||
CONTRIBUTING.md | ||
CONTRIBUTORS | ||
go.mod | ||
go.sum | ||
LICENSE | ||
PATENTS | ||
README.md |
Go Tools
This subrepository holds the source for various packages and tools that support the Go programming language.
Some of the tools, godoc
and vet
for example, are included in binary Go
distributions.
Others, including the Go guru
and the test coverage tool, can be fetched with
go get
.
Packages include a type-checker for Go and an implementation of the Static Single Assignment form (SSA) representation for Go programs.
Download/Install
The easiest way to install is to run go get -u golang.org/x/tools/...
. You can
also manually git clone the repository to $GOPATH/src/golang.org/x/tools
.
Report Issues / Send Patches
This repository uses Gerrit for code changes. To learn how to submit changes to this repository, see https://golang.org/doc/contribute.html.
The main issue tracker for the tools repository is located at https://github.com/golang/go/issues. Prefix your issue with "x/tools/(your subdir):" in the subject line, so it is easy to find.