kbobyrev created this revision. kbobyrev added a reviewer: ilya-biryukov. kbobyrev added a project: clang-tools-extra. Herald added subscribers: kadircet, arphaman, jkorous, MaskRay. kbobyrev edited the summary of this revision.
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 https://reviews.llvm.org/D51287 Files: clang-tools-extra/clangd/index/dex/Trigram.cpp Index: clang-tools-extra/clangd/index/dex/Trigram.cpp =================================================================== --- clang-tools-extra/clangd/index/dex/Trigram.cpp +++ clang-tools-extra/clangd/index/dex/Trigram.cpp @@ -67,10 +67,6 @@ 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}});
Index: clang-tools-extra/clangd/index/dex/Trigram.cpp =================================================================== --- clang-tools-extra/clangd/index/dex/Trigram.cpp +++ clang-tools-extra/clangd/index/dex/Trigram.cpp @@ -67,10 +67,6 @@ 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}});
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits