Swift does away with pointers == pervasive ARC

ed via Digitalmars-d digitalmars-d at puremagic.com
Tue Jun 17 05:08:19 PDT 2014


On Tuesday, 17 June 2014 at 11:59:23 UTC, Manu via Digitalmars-d 
wrote:
> On 17 June 2014 18:36, Nick Sabalausky via Digitalmars-d
> <digitalmars-d at puremagic.com> wrote:
>> On 6/17/2014 2:56 AM, "Ola Fosheim Grøstad"
>> <ola.fosheim.grostad+dlang at gmail.com>" wrote:
>>>
>>> On Tuesday, 17 June 2014 at 05:52:37 UTC, Nick Sabalausky 
>>> wrote:
>>>>
>>>> Well, I think interesting part we're trying to look at here 
>>>> is the
>>>> ARC's impact on speed.
>>>
>>>
>>> ARC without deep whole program analysis is bound to be 
>>> slow.[...]
>>
>>
>> Right, but what I'm mainly curious about is "How much slower?" 
>> Depending how
>> the numbers play out, then as Manu has mentioned, it could be 
>> that the
>> relaxed memory requirements and amortized cost are enough to 
>> make it a good
>> tradeoff for a lot of people (Like Manu, I have some interest 
>> in
>> soft-realtime as well).
>>
>> But I'm new to ARC, never even used ObjC, so I don't really 
>> even have much
>> frame of reference or ballpark ideas here. So that's why I'm 
>> interested in
>> the whole "How much slower?" Your descriptions of the ins and 
>> outs of it,
>> and Apple's motivations, are definitely interesting. But even 
>> if nothing
>> else, Manu's certainly right about one thing: What we need is 
>> some hard
>> empirical data.
>
> Andrei posted a document some time back comparing an advanced RC
> implementation with "the best GC", and it performed remarkably 
> well,
> within 10%!
> D does not have 'the best GC'. I doubt D's GC is within 10% of 
> 'the best GC'.
> In addition, my colleagues have reported no significant pain 
> working
> with ARC on iOS, whereas Android developers are always crying 
> about
> the GC by contrast.
>
> I can visualise Walter's criticisms, but what I don't know is 
> whether
> his criticisms are actually as costly as they may seem? I also 
> haven't
> seen the compilers ability to eliminate or simplify that work, 
> and the
> circumstances in which it fails. It's conceivable that simply
> rearranging an access pattern slightly may offer the compiler 
> the
> structure it needs to properly eliminate the redundant work.
>
> The thing is, I don't know! I really don't know, and I don't 
> know any
> practical way to experiment with this. D theoretically offers 
> many
> opportunities for ARC optimisation that other languages don't 
> via it's
> rich type system, so direct comparisons via O-C could probably 
> be
> reasonably considered to be quite conservative.
>
> Here's what I do know though; nobody has offered conception of 
> a GC
> that may be acceptable on a memory limited device, and it's 
> also not
> very acceptable just by nature (destructors are completely 
> broken;
> should be removed (like C#), concentrated cost as opposed to 
> amortised
> cost).
> As far as I know, there is NO OTHER CHOICE.
> Either somebody invents the fantasy GC, or we actually 
> *experiment* with ARC...
>
> We know: GC is unacceptable, and nobody has any idea how to 
> make one that is.
> We don't know: ARC is acceptable/unacceptable. Why.
>
> What other position can I take on this issue?

Check out the compiler and start the experiment you keep talking 
about.

Cheers,
ed


More information about the Digitalmars-d mailing list