John Carmack applauds D's pure attribute
foobar
foo at bar.com
Sun Feb 26 23:43:58 PST 2012
On Monday, 27 February 2012 at 04:17:24 UTC, Andrew Wiley wrote:
> On Sun, Feb 26, 2012 at 11:05 AM, Paulo Pinto
> <pjmlp at progtools.org> wrote:
>> Am 26.02.2012 17:34, schrieb so:
>>
>>> On Sunday, 26 February 2012 at 15:58:41 UTC, H. S. Teoh wrote:
>>>
>>>> Would this even be an issue on multicore systems where the
>>>> GC can run
>>>> concurrently? As long as the stop-the-world parts are below
>>>> some given
>>>> threshold.
>>>
>>>
>>> If it is possible to guarantee that i don't think anyone
>>> would bother
>>> with manual MM.
>>
>>
>> Well, some game studios seem to be quite happy with XNA, which
>> implies using
>> a GC:
>>
>> http://infinite-flight.com/if/index.html
>>
>
> I don't really see why you keep bringing up these examples.
> This is a
> performance issue, which means you can certainly ignore it and
> things
> will still work, just not as well. I've seen 3d games in Java,
> but
> they always suffer from an awkward pause at fairly regular
> intervals.
> This is why the AAA shops are still writing most of the engines
> in
> C++.
> You will always be able to find examples of developers that
> simply
> chose to ignore the issue for one reason or another.
>
> To make it clear, I'm not trying to antagonize you here. I
> agree that
> GC is in general a superior technical solution to manual memory
> management, and given the research going into GC technology,
> I'm sure
> that long term it's probably a good idea.
>
> However, I disagree with your statement that "the main issue is
> that
> the GC needs to be optimized, not that manual memory management
> is
> required."
> Making a GC that can run fast enough to make this sort of thing
> a
> non-issue is currently so hard that it can only be used in
> certain
> niche situations. That will probably change, but it will
> probably
> change over the course of several years. Manual memory
> management,
> however, is here now and dead simple to use so long as the
> programmer
> understands the semantics. Programming in that model is harder,
> but
> not nearly as bad as, say, thread-based concurrency with race
> conditions and deadlock. Manual memory management is much
> simpler to
> deal with than many other things programmers already take on
> voluntarily.
> When you want your realtime application to behave in a certain
> way,
> would you rather spend months or years working on the GC and
> program
> in a completely difficult style to deal with the issue, or use
> manual
> memory management *now* and deal with the slightly more
> difficult
> programming model? Cost/benefit wise, GC just doesn't make a
> lot of
> sense in this sort of scenario unless you have a lot of
> resources to
> burn or a specific reason to choose a GC-mandatory platform.
>
> Again, I'm not saying GC is bad, I'm saying that in this area,
> the
> cost/benefit ratio doesn't say you should spend your time
> improving
> the GC to make things work. For everyone else, GC is great, and
> I
> applaud David Simcha's efforts to improve D's GC performance.
It does take years but please note that those referenced papers
are already several years old. Some are from 2005-6.
It doesn't mean D shouldn't support manual memory management but
claiming that GC doesn't work for real-time is a [religious]
myth. Clearly the cost of research has already been spent years
ago and the algorithms were already documented and tested.
OT: one of the papers was written at my university.
More information about the Digitalmars-d
mailing list