Thanks for your response > > In my case I have been able to mostly get around the problem by > strategically disabling the GC during active memory allocations, and > then re-enabling when all or most of the allocations are completed. In > effect I'm doing manual memory management all over again because the > automated version fails to do a good enough job. Using this technique > I've been able to get near C++ performance speeds.
Incidentally, when you got this speed, what compiler were you using? dmd? > > Part of the problem is that the GC implementation is simply not suitable > for performance code and lacks fine tuning abilities (that I'm aware > of). Without a decent brain, it does stupid things, so when you have a > lot of allocations going on but no deallocations, the GC seems to be > running needlessly slowing down the application by as much as 3x. Maybe it's time the GC implementation is addressed - or otherwise, the whole concept of GC in D should be dropped. To be honest, I'm perfectly happy with RAII in C++ and since D supports that fully (even better IMHO), I don't really see that much point for GC in a language that is vying to become a top systems language. D without a GC and as fast as C++ ............... that would be it - the ultimate IMHO.
