shared array?

Laeeth Isharc via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Sep 12 15:35:59 PDT 2015


> On Saturday, 12 September 2015 at 06:23:12 UTC, Jonathan M 
> Davis wrote:
>> Aside from the few classes in Phobos, its GC usage is almost 
>> entirely restricted to when it allocates arrays or when it has 
>> to allocate a closure for a delegate, which can happen in some 
>> cases when passing predicates to range-based algorithms. 
>> Avoiding functions that need to allocate arrays avoids that 
>> source of allocation, and using functors or function pointers 
>> as predicates avoids having to allocate closures. So, you 
>> _can_ end up with GC allocations accidentally in Phobos if 
>> you're not careful, but on the whole, the assertion that 
>> Phobos uses the GC heavily is FUD - or at least a 
>> misunderstanding. But as we make more of the functions use 
>> lazy ranges rather than arrays (particularly with regards to 
>> strings), and we make more of the code @nogc, it becomes even 
>> clearer that the GC isn't involved. Also, improvements to how 
>> lambdas are handled should reduce how often closures have to 
>> be allocated for them.

Thank you for this.  How large is the allocation for closure for 
a delegate?  Just a pair of pointers?

On Saturday, 12 September 2015 at 13:42:44 UTC, Prudence wrote:
> I don't think it's that simple.
>
> Saying that it doesn't use it most of the time is not an 
> answer/solution. Using it at all is a problem because one 
> doesn't know when and where. I realize there is a switch 
> now(-vgc), and maybe that is the solution, but you say "well, 
> phobos only uses 0.01% on the GC", yet since you either don't, 
> can't, or won't know where that is, then it might as well be 
> 100% if you would like to potentially get off the GC one day.
>
> It's like playing Russian roulette. It doesn't matter if only 
> 1/6 times will kill you. It's totally different than 0/6.

But if you hardly use the GC, how long is it really going to take 
to run?



More information about the Digitalmars-d-learn mailing list