ilya-biryukov added a comment.

In D67172#1662945 <https://reviews.llvm.org/D67172#1662945>, @sammccall wrote:

> Only if it's 5% of something meaningful. If the denominator isn't something 
> we care about, then it's really "spending XXX usec is not ok" - which depends 
> on XXX I think.


Agree, but unit-test time is meaningful clangd developers. Not saying this is 
more important than real use-cases, but keeping the unit tests enables us to 
iterate faster.

> One way this could be simpler is if suffix mappings were gone, then the 
> `StdIncludes` class would go away and we'd just be left with a 
> `stringmap<string>`. Then there'd be a performance win with almost no extra 
> complexity.
>  The description says you're waiting for it to go away, but AFAIK nobody's 
> working on this nor really knows how to eliminate it.

We seem to know how to eliminate this in principle. See @hokein's comment, we 
could try parsing man pages or even the headers themselves and building a 
corresponding symbol map.
But this patch does not add suffix mapping, so I don't think that's relevant - 
this patch tries to avoid redundant initialization; not remove suffix maps.

> Some of the new complexity seems unneccesary even with this approach.
>  There's a lot of indirection around the initialization, an enum that gets 
> passed around a bunch, constructors that switch over it.
>  I think this could be:

Will update the patch. Although I find the current approach more direct, I will 
happily change the code according to your suggestion.

>>> I'm nervous about requiring langopts, it's convenient in 
>>> tests/prototypes/etc to be able to default-construct CanonicalIncludes 
>>> (e.g. a test that doesn't actually care about standard library mappings).
>> 
>> We can have a factory method that constructs with default lang opts for 
>> tests, I don't think this would be an issue in the actual application code. 
>> In fact, I think it'll make the application code better.
> 
> I'm not saying that there's no way to work around it, or that it's fatal, but 
> my opinion is that this would be worse than the current state.

If we care about having a default constructor, we can default to using 
`StdIncludes` with a default mapping. I'll avoid requiring `LangOptions` in the 
constructor in that case. Thanks for the early feedback!


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D67172/new/

https://reviews.llvm.org/D67172



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to