LinkedIn Article to be: Why you need to start moving off C/C++ to D, now.
Araq via Digitalmars-d
digitalmars-d at puremagic.com
Wed Jul 16 12:02:15 PDT 2014
On Wednesday, 16 July 2014 at 18:24:11 UTC, H. S. Teoh via
Digitalmars-d wrote:
> On Wed, Jul 16, 2014 at 06:11:54PM +0000, Araq via
> Digitalmars-d wrote:
>> On Wednesday, 16 July 2014 at 16:57:18 UTC, Kagamin wrote:
>> >On Tuesday, 15 July 2014 at 20:44:35 UTC, H. S. Teoh via
>> >Digitalmars-d
>> >wrote:
>> >>Not to mention, when you need to deallocate a large complex
>> >>data
>> >>structure, *somebody* has to do the work -- either you do it
>> >>yourself, or the reference counting implementation, or the
>> >>GC.
>> >
>> >The first and the last options are still prominent.
>>
>> A copying GC copies the live data, deallocation of a large
>> complex
>> data structure is free in this scenario. Same if you use a
>> manually
>> managed memory region for the data structure and then
>> deallocate the
>> region via some batch operation. But hey, this simple fact
>> must be
>> wrong because some guy read a single paper about GCs that
>> doesn't even
>> cover this point.
>
> Have you even read the paper? What you just said is exactly
> what the
> paper is describing. There are two ends of the spectrum of
> memory
> reclamation algorithms, at one end, you're tracing "matter"
> (live
> objects), and the other end you're tracing "antimatter" (dead
> objects).
> They are just duals of each other, and optimized GC/RC
> algorithms tend
> to approach the middle ground, with time/memory tradeoffs as an
> adjustable parameter.
The paper focusses on RC vs "tracing". My point is "tracing" vs
"copying" is another tradeoff. Here is a mark&sweep algorithm:
- Trace live objects.
- For each dead object: Deallocate.
Here is a copying GC:
- Trace and copy live objects.
- There is no deallocation step. The old region is free for
further usage.
More information about the Digitalmars-d
mailing list