[MLton] MLton.Rusage.measureGC

Henry Cejtin henry.cejtin@sbcglobal.net
Tue, 25 Apr 2006 15:53:46 -0500


I am confused by the logic and default value for the bool set by the function
MLton.Rusage.measureGC.  On the other hand, I am also confused about what  it
means to set it to false.

It  seems  from  a  test  that  if  I  don't set it and I don't use either of
gc-summary or gc-messages, that time spent in the GC counts both in  the  #gc
and  #self  members  of the record.  This is the same behavior if I set it to
true.  (I don't quite see how that happens since gc.c initializes the  member
of  the  C  struct  to  FALSE  and needGCTime() would only return true if the
member were TRUE, or DEBUG, summary or messages were going on,  and  none  of
these were.  In fact, the struct member is NEVER set to any thing but true in
any code I can find.)

If I set it to false then it only counts in the #self time and the  #gc  time
is 0.

I  assume  that  the  only  reason  behind  this  is  to save the CPU time in
computing the start and end times around a GC and adding it to the total.  If
that  is  the case, then the documentation should say that, and it should say
that this (that which is set by MLton.Rusage.measureGC) only controls whether
the #gc accumulates the GC time and that it goes to #self regardless.

Also, it seems that the default really should be false, but it isn't (despite
what the code looks like).

Am I missing something?