зеркало из https://github.com/golang/tools.git
488ba86990
Benchmarking demonstrated clearly that gopls must memoize active packages, to efficiently handle repeated requests related to open files (e.g. code lens, completion, semantic tokens). In doing so, gopls is effectively pinning the import graph of these open packages. However, when those packages changed, this import graph was not being reused. Furthermore when multiple open packages shared packages in their import graph, there was a chance that gopls may pin multiple copies of those packages, if the open packages were type-checked in separate batches. This change introduces a new optimization which manages a shared import graph to be re-used across snapshots. Before performing any type-checking we re-evaluate this shared import graph. This is purely an optimization, and is not necessary for correctness. As such, the feature is guarded behind a compile-time constant, so that it may easily be disabled for debugging. The plan is to have several such constants. For golang/go#57987 Change-Id: Ica654ffc8f1e5f39bcab7000c0839ece22e20ab2 Reviewed-on: https://go-review.googlesource.com/c/tools/+/479015 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Alan Donovan <adonovan@google.com> gopls-CI: kokoro <noreply+kokoro@google.com> Run-TryBot: Robert Findley <rfindley@google.com> |
||
---|---|---|
.. | ||
tokeninternal.go | ||
tokeninternal_test.go |