On Sat, Jan 25, 2020 at 1:47 PM Han-Wen Nienhuys <hanw...@gmail.com> wrote: > 7.2 seconds end-to-end includes 1.7s of GC, and 2.0s of reading/compiling SCM. > > On guile 1.8, with GS disabled, the end to end runtime is > > 3.568s including 0.33s for GC and 0.32s for reading the SCM. > > These timings are internally consistent: if we can do byte-compilation > on the .scm files (which would make the SCM reading instantaneous), > and get the GC overhead down, we'd be at the same performance level of > GUILE 1.8.
it looks like this should be fixable. The problem is that GC doesn't know how to scale the heap. When we are compiling things, we allocate a lot of new data, but do not generate much garbage. This makes GC waste a lot of time in trying to marking objects, without reclaiming any garbage. You can observe the difference by setting eg. GC_INITIAL_HEAP_SIZE=200M -- Han-Wen Nienhuys - hanw...@gmail.com - http://www.xs4all.nl/~hanwen