From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Han-Wen Newsgroups: gmane.lisp.guile.devel Subject: lazy sweeping. Date: Mon, 29 Jul 2002 01:32:24 +0200 Sender: guile-devel-admin@gnu.org Message-ID: <15684.32520.154258.348830@blauw.xs4all.nl> Reply-To: hanwen@cs.uu.nl NNTP-Posting-Host: localhost.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Trace: main.gmane.org 1027899007 24557 127.0.0.1 (28 Jul 2002 23:30:07 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Sun, 28 Jul 2002 23:30:07 +0000 (UTC) Return-path: Original-Received: from fencepost.gnu.org ([199.232.76.164]) by main.gmane.org with esmtp (Exim 3.33 #1 (Debian)) id 17YxUC-0006Ny-00 for ; Mon, 29 Jul 2002 01:30:05 +0200 Original-Received: from localhost ([127.0.0.1] helo=fencepost.gnu.org) by fencepost.gnu.org with esmtp (Exim 3.35 #1 (Debian)) id 17YxUY-0005N1-00; Sun, 28 Jul 2002 19:30:26 -0400 Original-Received: from smtpzilla1.xs4all.nl ([194.109.127.137]) by fencepost.gnu.org with esmtp (Exim 3.35 #1 (Debian)) id 17YxTV-0005JV-00 for ; Sun, 28 Jul 2002 19:29:21 -0400 Original-Received: from blauw.xs4all.nl (blauw.xs4all.nl [213.84.26.127]) by smtpzilla1.xs4all.nl (8.12.0/8.12.0) with ESMTP id g6SNTJhx020788 for ; Mon, 29 Jul 2002 01:29:19 +0200 (CEST) Original-To: guile-devel@gnu.org X-Mailer: VM 7.05 under Emacs 21.2.1 Errors-To: guile-devel-admin@gnu.org X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Developers list for Guile, the GNU extensibility library List-Unsubscribe: , List-Archive: Xref: main.gmane.org gmane.lisp.guile.devel:872 X-Report-Spam: http://spam.gmane.org/gmane.lisp.guile.devel:872 Here are some results of my lazy sweeping implementation: Java tree benchmark 1.7.0: time ~/usr/bin/guile -s /tmp/GCBench.scheme.txt user 2m20.350s sys 0m0.310s 1.7.0 + newgc + lazy sweeping time ./libguile/.libs/lt-guile -s /tmp/GCBench.scheme.txt user 2m20.120s sys 0m0.240s Nothing spectacular. But now checkout ... the startup time! (this is the time for starting guile, and then pressing ^D) 1.7.0: time ~/usr/bin/guile user 0m0.170s sys 0m0.000s 1.7.0 + newgc + lazy sweeping user 0m0.090s sys 0m0.010s The lazy sweeping approximately halves the startup time of GUILE. I consider the old GC beat; when can we start integrating this? http://www.cs.uu.nl/~hanwen/public/guile/lazy-sweeping.tar.gz Implementation notes: * Lazy sweeping sounds like a feature, but it actually leads to simpler, more natural code than the old sweeping code. * Various debug functions (mainly those having to do with checking the freelist) become moot; I removed them. * I removed SCM_FREECELL_P(). It's meaning has become ambiguous. * Lazy sweeping naturally complements multi-threaded use: whenever a thread runs out of free cells, we can simply sweep a few (say 512) cells, and return that for private use by that thread. * Et ceteram censeo GUILE 1.6 releasem esse. -- Han-Wen Nienhuys | hanwen@cs.uu.nl | http://www.cs.uu.nl/~hanwen _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel