[MLton-devel] first benchmarks with generational gc
Matthew Fluet
Matthew Fluet <fluet@CS.Cornell.EDU>
Tue, 6 Aug 2002 17:38:58 -0400 (EDT)
> * The code size impact of card marking in the mutator is negligible.
Excellent, if a little surprising.
> * The run-time impact of generational gc was not very much, except a
> couple of major slowdowns (DLXSimulator, tsp) and one major speedup
> (nucleic).
DLXSim was written during my "purely functional" phase; it simulates
immutable arrays with (very long) lists. An update looks like:
fun update (IA ia, i, x) = IA ((List.take (ia, i)) @
(x::(List.drop (ia, i + 1))));
So, while there are shared tails, it's generating a lot of garbage every
cycle of the simulation. A lot of the stuff that is tenured is likely to
be garbage the next time around.
Which doesn't explain anything ... shouldn't that be exactly the case
where a generational GC would shine?
Or, maybe it is exactly right. The cost of (stop-and-copy) GC should be
almost exactly the same with and without generational GC, because almost
all of the reachable data will be in the nursery; i.e., we won't save much
by stoping the trace at the old-generation boundary. But, the nursery is
half the size of the non-generational heap, so we're GCing twice as often.
Unfortunately, GC only seems to account for 22% of the benchmark, which
doesn't seem enough to double the running time.
Are the increases in compile time for the -generational {true,false}
due to the fact that that compiler was compiled from mlton-stubs.cm?
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
MLton-devel mailing list
MLton-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mlton-devel