GC behavior
Kiith-Sa via Digitalmars-d
digitalmars-d at puremagic.com
Mon Oct 6 10:14:37 PDT 2014
On Monday, 6 October 2014 at 16:23:41 UTC, Jonathan wrote:
> If I pool all unused objects such that no object needs to be
> GC'ed, does it still perform scanning? What are other good ways
> to avoid its overhead? As you might tell, I know rather little
> how D's garbage collection works. I'm working on a game engine
> and trying to be as resource efficient as possible.
>
> FYI, I've been using Rust for the last three months and decided
> to take a break from it. The documentation is far from the
> quality that D has and managing explicit lifetimes becomes a
> serious pain during mid project, especially in cases that you
> know are already safe.
Suggestion (may or may not be useful depending on your game): use
an ECS
(http://t-machine.org/index.php/2007/09/03/entity-systems-are-the-future-of-mmog-development-part-1/)
approach with big, manually allocated arrays of structs in the
implementation. I'm working on something but it's not documented
enough/API is butt-ugly/not nearly stable-enough yet:
https://github.com/kiith-sa/tharsis-core
Some people are working on other ECS's too, see code.dlang.org
(some are very efficient, some are not... don't remember which).
And (very simplistic advice, but...) if ECS doesn't fit your
needs or you do use GC to allocate a lot of stuff anyway, reuse
dead objects and control the GC by disable()ing/reenabling and
explicitly fullCollect()ing.
More information about the Digitalmars-d
mailing list