[gclist] Precise GC's performance

Nick Barnes nickb@harlequin.co.uk
Wed, 06 Mar 1996 16:15:48 +0000


> Actually, I believe Charles' answer is very relevant to your question.
> One of the main differences between conservative and precise collection is
> that precise GC can use copying collection. Copying collectors have a much
> faster malloc than mark-sweep collectors. If collections rarely take place
> (i.e. huge space overheads are allowed), collector performance is dominated
> by allocator performance. In this case, copying collection and therefore
> precise collection is faster than conservative collection. In the real
> world, this is not very meaningful. I remember visiting the FOX project at
> CMU (a TCP/IP stack written in ML), the speed of collection was excellent,
> but the memory footprint of the TCP/IP stack was several tens of megabytes,
> which is completely unacceptable for a real system.

With respect, the heap requirements of the Fox projects "FoxNet" code
are not necessarily the best indication of the heap requirements of
other systems which include a copying collector.

- SML/NJ uses CPS and does not keep a stack (so it allocates out the
  wazoo). 

- until recently SML/NJ had a GC which was only generational in a
  primitive sense.

- SML/NJ does not have a tremendous "delivery" system (and as far as I
  know the Fox project does not even use the delivery mechanisms
  provided), so that "several tens of megabytes" almost certainly
  includes the SML/NJ system itself (compiler, &c), together with
  large amounts of type information &c. for the Fox code which could
  in fact be discarded at run time.

- the FoxNet project is experimental, and therefore likely to have
  (e.g. debugging) memory requirements which are not present in a
  finished product.

- the FoxNet project, at least when I was a part of it, did not place
  great emphasis on memory requirements. Thus the natural tendency of
  SML/NJ-based systems to have bloated heap requirements was not
  curbed.

Nick Barnes n'e Haines, ex-Fox, speaking for himself