I've just updated to the latest SVN of poly, and my compile times have ballooned up. Prodding it a bit, it looks to me like there's a memory leak in the interpreter.
Here's what I do to get it to happen:
1. Fire up poly and load a modest heap (59 megs) containing about 100 structures and functors. top shows poly's RAM usage goes to a little over 59 megs. 2. Run some pretty functor-heavy code, including some code that looks (essentially) like this:
structure Structure1 = Functor1(....); structure Structure2 = Functor2(structure Foo = Structure1); structure Structure3 = struct open Structure1; Structure2; end structure Structure4 = Structure3 : SIG
Admittedly, these are some pretty big structs, and poly's RAM usage hits over a gig, and doesn't go back down once execution is finished. "PolyML.fullGC ();" seems to have no effect.
3. Save the heap, still < 70 megs. 4. Close and open poly w new heap, RAM usage still < 70 megs
So, the compile-time slowness seems to be poly filling the system's RAM and starts swapping pages. I included the code above on the off chance there's some cyclic dependency between the structs that keeps some junk from being garbage collected.
I can give SVN links if you want to see the offending code itself, but its part of a pretty large project, so I don't know how helpful that would be.
Thanks! Aleks