jingham added a comment.

In D131996#3728253 <https://reviews.llvm.org/D131996#3728253>, @labath wrote:

> In case you have an idea of what's the "typical" number of objects in shared 
> cluster, then we can tune the integer template parameter (in case we usually 
> have more than 16 objects, then the inline storage is just wasting space, and 
> we could reduce it).

I don't remember who made the guess at 16, or what went into that choice.

What we know is that there will ALWAYS be one, and there are a lot of scalar 
variables floating around in code so that would cover them.  The SmallPtrSet 
rounds the pre-allocation up to the nearest power of 2 however.   But that's 
actually okay since, if the root ValueObject is a pointer, we generally also 
figure out the dynamic pointer value, which exists a good % of the time in C++, 
Swift & ObjC code.  So that means right off the bat you get two managed 
ValueObjects for a lot of pointers.

More that that, you'd need to know what is the center of the lowest hump in the 
graph of "sizes of structs in all C/C++/ObjC code"...  My feeling is that you 
generally end up with a bunch of small utility structs with a couple of 
elements (points and pairs are common), then after that the sizes expand 
rapidly - especially since the ClusterManager manages all the children/children 
of children, etc.  So 16 seems high to me.  Let's go with 4 which will give us 
scalars & pointers and 2/3 element structs with no allocation.  After that I 
don't know enough to guess a better answer.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D131996

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

Reply via email to