Smart pointers instead of GC?
woh
wojw at yahoo.com
Mon Feb 3 15:00:22 PST 2014
ur right I never thought of that, I bet all them game devs never
thought of it either, they so dumb. I bet they never tried to
use a GC, what fools! Endless graphs of traced objects, oh yes
oh yes! It only runs when I allocate, oh what a fool I've been,
please castigate me harder!
Adam pls tell me more of this c# and that amazing gc it sounds
so good
On Monday, 3 February 2014 at 21:42:59 UTC, Shammah Chancellor
wrote:
> On 2014-02-01 07:35:44 +0000, Manu said:
>
>> On 1 February 2014 16:26, Adam Wilson <flyboynw at gmail.com>
>> wrote:
>> On Fri, 31 Jan 2014 21:29:04 -0800, Manu <turkeyman at gmail.com>
>> wrote:
>>
>> On 26 December 2012 00:48, Sven Over <dlang at svenover.de> wrote:
>>
>> std.typecons.RefCounted!T
>>
>> core.memory.GC.disable();
>>
>>
>> Wow. That was easy.
>>
>> I see, D's claim of being a multi-paradigm language is not
>> false.
>>
>>
>> It's not a realistic suggestion. Everything you want to link
>> uses the GC,
>> and the language its self also uses the GC. Unless you write
>> software in
>> complete isolation and forego many valuable features, it's not
>> a solution.
>>
>>
>> Phobos does rely on the GC to some extent. Most algorithms
>> and ranges do
>> not though.
>>
>>
>> Running (library) code that was written with GC in mind and
>> turning GC off
>> doesn't sound ideal.
>>
>> But maybe this allows me to familiarise myself more with D.
>> Who knows,
>> maybe I can learn to stop worrying and love garbage collection.
>>
>> Thanks for your help!
>>
>>
>> I've been trying to learn to love the GC for as long as I've
>> been around
>> here. I really wanted to break that mental barrier, but it
>> hasn't happened.
>> In fact, I am more than ever convinced that the GC won't do.
>> My current #1
>> wishlist item for D is the ability to use a reference counted
>> collector in
>> place of the built-in GC.
>> You're not alone :)
>>
>> I write realtime and memory-constrained software (console
>> games), and for
>> me, I think the biggest issue that can never be solved is the
>> non-deterministic nature of the collect cycles, and the
>> unknowable memory
>> footprint of the application. You can't make any guarantees or
>> predictions
>> about the GC, which is fundamentally incompatible with
>> realtime software.
>> Language-level ARC would probably do quite nicely for the
>> miscellaneous
>> allocations. Obviously, bulk allocations are still usually
>> best handled in
>> a context sensitive manner; ie,
>> regions/pools/freelists/whatever, but the
>> convenience of the GC paradigm does offer some interesting and
>> massively
>> time-saving features to D.
>> Everyone will always refer you to RefCounted, which mangles
>> your types and
>> pollutes your code, but aside from that, for ARC to be useful,
>> it needs to
>> be supported at the language-level, such that the
>> language/optimiser is
>> able to optimise out redundant incref/decref calls, and also
>> that it is
>> compatible with immutable (you can't manage a refcount if the
>> object is
>> immutable).
>>
>> The problem isn't GC's per se. But D's horribly naive
>> implementation, games are written on GC languages now all the
>> time (Unity/.NET). And let's be honest, games are kind of a
>> speciality, games do things most programs will never do.
>>
>> You might want to read the GC Handbook. GC's aren't bad, but
>> most, like the D GC, are just to simplistic for common usage
>> today.
>>
>> Maybe a sufficiently advanced GC could address the performance
>> non-determinism to an acceptable level, but you're still left
>> with the memory non-determinism, and the conundrum that when
>> your heap approaches full (which is _always_ on a games
>> console), the GC has to work harder and harder, and more often
>> to try and keep the tiny little bit of overhead available.
>> A GC heap by nature expects you to have lots of memory, and
>> also lots of FREE memory.
>>
>> No serious console game I'm aware of has ever been written in
>> a language with a GC. Casual games, or games that don't
>> attempt to raise the bar may get away with it, but that's not
>> the industry I work in.
>
> You can always force the GC to run between cycles in your game,
> and
> turn off automatic sweeps. This is how most games operate
> nowadays.
> It's also probably possible to create a drop-in replacement for
> the GC
> to do something else. I could see if being *VERY* useful to
> make the
> GC take a compile-time parameter to select which GC engine is
> used.
More information about the Digitalmars-d
mailing list