[PATCH] D45478: [clangd] Merge symbols in global-sym-builder on the go
Ilya Biryukov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Apr 19 06:00:33 PDT 2018
ilya-biryukov added inline comments.
================
Comment at: clangd/global-symbol-builder/GlobalSymbolBuilderMain.cpp:53
+/// Combines occurrences of the same symbols across translation units.
+class SymbolMerger {
----------------
ilya-biryukov wrote:
> sammccall wrote:
> > Seems reasonably likely we would actually have contention here? merging per-thread (combiner) and then globally at the end (reducer) might be the way to go (might be significantly faster). But not sure how big the impact is.
> I haven't seen any noticeable performance degradation after this patch.
> There should be contention, but it doesn't seem to matter much, as parsing still takes way more time.
>
> Still makes sense to rewrite the code in order to avoid contention, will do that.
Looking at the traces, the threads spend ~6% of `mergeSymbols` time between `Lock(Mut)` and `for(const Sym...`.
Improving it might be a good idea, but from my point of view it's not too bad to commit it as is.
Doing it properly is a little complicated in the current setup, since we don't have knobs to create per-thread structs and merge them later.
Repository:
rCTE Clang Tools Extra
https://reviews.llvm.org/D45478
More information about the cfe-commits
mailing list