Subject: Re: Hybrid RC/GC system to support real-time applications that can't afford pauses?
From: rpw3@rpw3.org (Rob Warnock)
Date: Fri, 11 Jul 2008 21:18:57 -0500
Newsgroups: comp.lang.lisp
Message-ID: <xfqdnU1TJ6cMieXVnZ2dnUVZ_oTinZ2d@speakeasy.net>
Robert Maas, <jaycx2.3.calrobert@spamgourmet.com.remove> wrote:
+---------------
| Most algorithms in Lisp have shared structure but no pointer-loops
| whatsoever except for loops that pass through a symbol.
+---------------

I suspect you are quite incorrect on this. Large graph-based
algorithms routinely have numerous cycles, up-pointers, sibling
pointers, double-linked lists [for easy insertion/deletion], etc., etc.
Jeff Shrager ["BioBike", etc.] might be able to confirm this.

+---------------
| Even algorithms that have explicit loops can often be re-coded
| to have symbols at the key points where loops come around, and to
| explicitly keep a database/set of such key points.
+---------------

Not algorithms that dynamically generate millions of graph nodes
with arbitrary linkages.

+---------------
| Now we all know if there are no loops then a reference count system
| works just fine, and is in fact more efficient than a garbage-collect
| system.
+---------------

Aha! Here's the main flaw! Reference-counting GCs are in fact *NOT*
more efficient than either copying or mark&sweep GCs!! Ref-counting
requires *stores* to the ref counts as they are modified, and this
causes read/modify/write pipeline stalls. Game over.

[Remainder ignored, being based on a fallacious assumption...]


-Rob

-----
Rob Warnock			<rpw3@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607