On Thu, 10 Sep 2015, Ludovic Courtès wrote: > GC_INITIAL_HEAP_SIZE= - Initial heap size in bytes. May speed up > process start-up. > > GC_MAXIMUM_HEAP_SIZE= - Maximum collected heap size. > > GC_MARKERS= - Linux w/threads and parallel marker only. Set the number > of marker threads. This is normally set to the number of > processors. It is safer to adjust GC_MARKERS than GC_NPROCS, > since GC_MARKERS has no impact on the lock implementation. > > Guile also honors the ‘GC_FREE_SPACE_DIVISOR’ environment variable. See > the comments in gc.h for the meaning of this one. > > HTH, > Ludo’. Hi Ludovic, Increasing the initial heap size already improves the performance a lot: $ make bench ... make[1]: Entering directory '/home/jan/test/aiscm/bench' LD_LIBRARY_PATH=../aiscm/.libs:../bench/.libs:/usr/local/lib GC_INITIAL_HEAP_SIZE=1G GC_USE_ENTIRE_HEAP=Y /usr/bin/guile --no-auto-compile -L .. bench.scm user system total real Guile GOOPS method dispatch 0.000110 0.000000 0.000110 ( 0.000100) Guile make empty sequence 0.000640 0.000000 0.000640 ( 0.000640) Guile allocate memory 0.000210 0.000000 0.000210 ( 0.000210) Guile negate empty sequence 0.002950 0.000080 0.003030 ( 0.003020) Guile make sequence 0.000740 0.000000 0.000740 ( 0.000740) Guile negate sequence 0.003960 0.000490 0.004450 ( 0.004460) C allocate memory 0.000080 0.000000 0.000080 ( 0.000070) C negate empty sequence 0.000050 0.000000 0.000050 ( 0.000060) C negate sequence 0.000740 0.000000 0.000740 ( 0.000740) make[1]: Leaving directory '/home/jan/test/aiscm/bench' I'll try to understand the free space divisor later. Many thanks Jan