So what exactly is coming with extended C++ support?
via Digitalmars-d
digitalmars-d at puremagic.com
Wed Oct 1 01:50:38 PDT 2014
On Tuesday, 30 September 2014 at 23:31:36 UTC, Cliff wrote:
> Not a GC specialist here, so maybe the thought arises - why not
> turn off automatic GC until such times in the code where you can
> afford the cost of it, then call GC.collect explicitly -
> essentially eliminating the opportunity for the GC to run at
> random times and force running at deterministic times? Is
> memory
> usage so constrained that failing to execute runs in-between
> those deterministic blocks could lead to OOM? Does such a
> strategy have other nasty side-effects which make it
> impractical?
The latter. If you want a game to run at 60 fps, you have about
16 ms for each frame, during which time you need to make all the
necessary game and graphics updates. There's no upper to limit to
the amount of time a GC run can take, so it can easily exceed the
few ms you have left for it.
There are however GC algorithms that support incremental
collection, meaning that you can give the GC a deadline. If it
can't finish before this deadline, it will have to interrupt its
work and continue on the next run. Unfortunately, these GCs
usually require special compiler support (barriers, and
distinguishing GC from non-GC pointers), which we don't have. But
there is CDGC writte by Leandro Lucarella for D1, which uses a
forking to achieve the same effect, and which Dicebot is
currently porting to D2:
http://forum.dlang.org/thread/exfrifcfczgjwkudqdgx@forum.dlang.org
More information about the Digitalmars-d
mailing list