Stop using `$$$` (empty) trigram and generating a posting list with all
items. Since TRUE iterator is already implemented and correctly inserted
when there are no real trigram posting lists, this is a valid
transformation.
Benchmarks show that this simple change allows ~30% speedup on dataset
of real completion queries.
Before
```
-------------------------------------------------------
Benchmark Time CPU Iterations
-------------------------------------------------------
DexAdHocQueries 5640321 ns 5640265 ns 120
DexRealQ
939835603 ns
939830296 ns 1
```
After
```
-------------------------------------------------------
Benchmark Time CPU Iterations
-------------------------------------------------------
DexAdHocQueries 3452014 ns 3451987 ns 203
DexRealQ
667455912 ns
667455750 ns 1
```
Reviewed by: ilya-biryukov
Differential Revision: https://reviews.llvm.org/D51287
llvm-svn: 340729
UniqueTrigrams.insert(Token(Token::Kind::Trigram, Chars));
};
- // FIXME(kbobyrev): Instead of producing empty trigram for each identifier,
- // just use True Iterator on the query side when the query string is empty.
- add({{END_MARKER, END_MARKER, END_MARKER}});
-
if (TwoHeads.size() == 2)
add({{TwoHeads.front(), TwoHeads.back(), END_MARKER}});