This is the mail archive of the
guile@sourceware.cygnus.com
mailing list for the Guile project.
markbits out of cells. 1st attempt.
- To: guile at sourceware dot cygnus dot com
- Subject: markbits out of cells. 1st attempt.
- From: Han-Wen Nienhuys <hanwen at cs dot uu dot nl>
- Date: Fri, 9 Jun 2000 18:43:05 +0200 (CEST)
- Reply-To: hanwen at cs dot uu dot nl
I whipped the last errors from my gc patch (thus proving that you
shouldn't code on an empty stomach. When I wrote it, I made two
blatantly stupid errors that were very hard to find.)
see http://www.cs.uu.nl/~hanwen/software/
Performance is not very good (3 to 4 times slower than stock 1.3.4),
but it still surprises me, given how crude this hack is.
Next project: allocate heap segments in multiples of 2^x, and
intersperse the array of markbits through the heap so you can find the
markbits by doing
markbits_p = address ^ (1 <<x - 1)
* x has to be so large enough, such that most pages don't contain
markbits.
* x can't be too large, or otherwise we create a lots of unused space
when the block that malloc returns is not aligned correctly.
* should the markbits be stored within the heap segment, or in a
separate spot? (ie. the difference between (*markbits_p)[k] and
markbits[k])
dokkum:~/usr/src/guile-modules/benchmarks$ ~/usr/src/guile-core/libguile/guile -s ./run-ports
Opened log file, Fri 9 Jun 18:19:57
System: Linux dokkum.cs.uu.nl 2.2.14 i686
Benchmark lib version: 4
Benchmark: gc-time revision 1
debug:sum 1 3.52s user 12.21s gc 0.00s sys 15.73s tot
debug:sum 2 3.48s user 12.22s gc 0.01s sys 15.71s tot
debug:sum 3 3.45s user 12.26s gc 0.00s sys 15.71s tot
debug:sum 4 3.45s user 12.33s gc 0.02s sys 15.80s tot
debug:sum 5 3.41s user 12.36s gc 0.04s sys 15.81s tot
===> 1 3.52s user 12.21s gc 0.00s sys 15.73s tot
normal:sum 1 2.55s user 7.00s gc 0.02s sys 9.57s tot
normal:sum 2 2.52s user 7.05s gc 0.03s sys 9.60s tot
normal:sum 3 2.53s user 6.90s gc 0.02s sys 9.45s tot
normal:sum 4 2.46s user 6.67s gc 0.01s sys 9.14s tot
normal:sum 5 2.45s user 6.77s gc 0.00s sys 9.22s tot
===> 3 2.53s user 6.90s gc 0.02s sys 9.45s tot
GC time is 77.6% of total time in the debugging evaluator and
73.2% of total time in the normal.
dokkum:~/usr/src/guile-modules/benchmarks$ /usr/bin/guile -s ./run-ports
Opened log file, Fri 9 Jun 18:22:45
System: Linux dokkum.cs.uu.nl 2.2.14 i686
Benchmark lib version: 4
Benchmark: gc-time revision 1
debug:sum 1 4.29s user 3.49s gc 0.01s sys 7.79s tot
debug:sum 2 4.33s user 3.49s gc 0.00s sys 7.82s tot
debug:sum 3 4.40s user 3.50s gc 0.00s sys 7.90s tot
debug:sum 4 4.35s user 3.51s gc 0.01s sys 7.87s tot
debug:sum 5 4.31s user 3.54s gc 0.00s sys 7.85s tot
===> 5 4.31s user 3.54s gc 0.00s sys 7.85s tot
normal:sum 1 2.73s user 1.93s gc 0.01s sys 4.67s tot
normal:sum 2 2.74s user 1.96s gc 0.01s sys 4.71s tot
normal:sum 3 2.75s user 1.92s gc 0.00s sys 4.67s tot
normal:sum 4 2.78s user 1.89s gc 0.01s sys 4.68s tot
normal:sum 5 2.78s user 1.91s gc 0.00s sys 4.69s tot
===> 4 2.78s user 1.89s gc 0.01s sys 4.68s tot
GC time is 45.1% of total time in the debugging evaluator and
40.5% of total time in the normal.
--
Han-Wen Nienhuys, hanwen@cs.uu.nl ** GNU LilyPond - The Music Typesetter
http://www.cs.uu.nl/people/hanwen/lilypond/index.html