[clangd] Force Dex to respect symbol collector flags
authorKirill Bobyrev <kbobyrev.opensource@gmail.com>
Mon, 24 Sep 2018 08:45:18 +0000 (08:45 +0000)
committerKirill Bobyrev <kbobyrev.opensource@gmail.com>
Mon, 24 Sep 2018 08:45:18 +0000 (08:45 +0000)
commit94af0612e05def8accaea784d77561eb30da8978
tree4d0efda1e41b27d87609b30f92ea61bf5540414f
parent1e8fdbe3c300489af9f30610e317348b565ce103
[clangd] Force Dex to respect symbol collector flags

`Dex` should utilize `FuzzyFindRequest.RestrictForCodeCompletion` flags
and omit symbols not meant for code completion when asked for it.

The measurements below were conducted with setting
`FuzzyFindRequest.RestrictForCodeCompletion` to `true` (so that it's
more realistic). Sadly, the average latency goes down, I suspect that is
mostly because of the empty queries where the number of posting lists is
critical.

| Metrics  | Before | After | Relative difference
| -----  | -----  | -----   | -----
| Cumulative query latency (7000 `FuzzyFindRequest`s over LLVM static index)  | 6182735043 ns    | 7202442053 ns | +16%
| Whole Index size | 81.24 MB    | 81.79 MB | +0.6%

Out of 292252 symbols collected from LLVM codebase 136926 appear to be
restricted for code completion.

Reviewers: ioeric

Differential Revision: https://reviews.llvm.org/D52357

llvm-svn: 342866
clang-tools-extra/clangd/index/dex/Dex.cpp
clang-tools-extra/unittests/clangd/DexTests.cpp