shared array?
Prudence via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Sep 12 06:42:42 PDT 2015
On Saturday, 12 September 2015 at 06:23:12 UTC, Jonathan M Davis
wrote:
> On Friday, September 11, 2015 23:29:05 Laeeth Isharc via
> Digitalmars-d-learn wrote:
>> On Friday, 11 September 2015 at 21:58:28 UTC, Adam D. Ruppe
>> wrote:
>> > [...]
>>
>> Seems to be quite a lot of FUD wrt use of standard library and
>> GC, which means also perhaps we don't communicate this point
>> very well as a community. Making Phobos GC-optional perhaps
>> is an ultimate answer. But people seem to think that you're
>> back to C without the GC.
>
> 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.
>
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.
More information about the Digitalmars-d-learn
mailing list