On Thu, 13 Mar 2014 09:37:51 -0400, Dicebot <pub...@dicebot.lv> wrote:

On Thursday, 13 March 2014 at 13:16:54 UTC, Daniel Murphy wrote:
"Steven Schveighoffer" wrote in message news:op.xcnu55j2eav7ka@stevens-macbook-pro.local...

> The worst breaking change in D2, by far, is the prevention > of array stomping.

What is your use case(s), might I ask? Prevention of array stomping, I thought, had a net positive effect on performance, because it no longer has to lock the GC for thread-local appends.

I would guess they're setting length to zero and appending to re-use the memory.

Exactly. So far looks like upon transition to D2 almost all arrays used in our code will need to be replaced with some variation of Appender!T

I think you might find that it will run considerably faster in that case. In the old mechanism of D1, the GC lock was used on every append, and if you had multiple threads appending simultaneously, they were contending with the single element cache to look up block info. Appender only needs to look up GC block info when it needs more memory from the GC.

I would also mention that a "band-aid" fix, if you are always using x.length = 0, is to special case that in the runtime to automatically reset the used size to 0 as well. This is a specialized application, I would think tweaking the runtime is a possibility, and a temporary fix like this until you can update your code would at least provide an intermediate solution.

-Steve

Reply via email to