On Thu, 29 May 2014 06:09:17 -0400, Atila Neves <atila.ne...@gmail.com> wrote:


The GC is preventing me from beating Java, but not because of
collections. It's the locking it does to allocate instead! I
don't know about the rest of you but I definitely didn't see that
one coming.

Just checked. It used to be a long time ago that single threaded apps did not take the lock. It appears not to be the case any more, the lock is always taken.

The explanation in the comment is that finalizers may spawn a new thread. See https://github.com/D-Programming-Language/druntime/blob/master/src/gc/gc.d#L410

Surely we can figure this out...

More and more, it's looking like we are going to start needing thread-local pools for thread-local allocations.

To work around, you might be able to pre-allocate all your data before starting, and make judicious re-use of buffers. But of course, this may make the code so much more ugly, which it shouldn't have to be.

-Steve

Reply via email to