On Tuesday, 17 June 2014 at 00:22:55 UTC, Manu via Digitalmars-d wrote:
On 17 June 2014 10:08, deadalnix via Digitalmars-d
<digitalmars-d@puremagic.com> wrote:
On Monday, 16 June 2014 at 15:16:44 UTC, Manu via Digitalmars-d wrote:

What say you to that, Walter?

Apple have committed to pervasive ARC, which you consistently argue is
not feasible...
Have I missed something, or is this a demonstration that it is
actually practical?


http://stackoverflow.com/questions/24101718/swift-performance-sorting-arrays

Does it answer the question ?

-Ofast seems to perform the same as C++. -Ofast allegedly does
basically what '-release -noboundscheck' does. You'd never try and
benchmark D code without those flags.

The thing which slowed his loop down was the compiler not removing the retain and release calls for ARC in that case. As he says.

With -O3 I get something that was beyond my wildest imagination. The inner loop spans 88 lines of assembly code. I did not try to understand all of it, but the most suspicious parts are 13 invocations of "callq _swift_retain" and another 13 invocations of "callq _swift_release". That is, 26 subroutine calls in the inner loop!

Obviously they can optimise these retain and release calls away. However, I don't believe it will work with the right optimisations in place for hot code. I think the only thing which can work reliably in hot code is memory you manage yourself. I don't think there's an automatic memory management scheme which will do all of the work for you in most situations without incurring some additional runtime cost.

Reply via email to