kbobyrev created this revision. kbobyrev added reviewers: ioeric, sammccall, ilya-biryukov. kbobyrev added a project: clang-tools-extra. Herald added subscribers: kadircet, arphaman, jkorous, MaskRay.
If the current element is already beyond advanceTo()'s DocID, just return instead of doing binary search. This simple optimization saves up to 3-4% performance, https://reviews.llvm.org/D51802 Files: clang-tools-extra/clangd/index/dex/Iterator.cpp Index: clang-tools-extra/clangd/index/dex/Iterator.cpp =================================================================== --- clang-tools-extra/clangd/index/dex/Iterator.cpp +++ clang-tools-extra/clangd/index/dex/Iterator.cpp @@ -38,6 +38,8 @@ /// or higher than the given one. void advanceTo(DocID ID) override { assert(!reachedEnd() && "DOCUMENT iterator can't advance() at the end."); + if (peek() == ID) + return; Index = std::lower_bound(Index, std::end(Documents), ID); }
Index: clang-tools-extra/clangd/index/dex/Iterator.cpp =================================================================== --- clang-tools-extra/clangd/index/dex/Iterator.cpp +++ clang-tools-extra/clangd/index/dex/Iterator.cpp @@ -38,6 +38,8 @@ /// or higher than the given one. void advanceTo(DocID ID) override { assert(!reachedEnd() && "DOCUMENT iterator can't advance() at the end."); + if (peek() == ID) + return; Index = std::lower_bound(Index, std::end(Documents), ID); }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits