This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: gc notes available


> > 3. Emacs has a non generational GC that's on the slow side.  Does its
> >    pauses cause a significant degradation of it's UI?
> 
> Just to amplify a bit: emacs used to gc only* as a response to
> keyboard input.  This was annoying, as it might teeter on the brink of
> gc for hours, until someone resumed typing, at which point it would
> gc, with a noticeable pause and a message to that effect.
> 
> Emacs will now gc, if necessary, during breaks in keyboard activity.
> I don't know, but doubt that emacs' gc is much faster.  I suspect that
> total cpu time spent in gc might actually be greater, since gc tends
> to happen earlier.  But, the irritating pauses and messages are gone.

There are a lot of clever UI issues built into emacs, such as redrawing
the screen being prioritised lower than any current calculations. The
screen hops also adjust slightly if they can reduce the amount of redraw
(or is this my imagination), the spare time is also used for things like
syntax painting. To me this says that user interface design is something
than benefits more from a lot of thoughtful tinkering than it does from
raw CPU power.

People looking at user interfaces might consider

	http://www.cs.cmu.edu/~amulet

and

	http://www.cs.cmu.edu/~garnet

Amulet is C++ and garnet is common lisp, the code for both is free
and there is currently no support for either other than user interest.
The idea of the project was to provide a framework for experimentation
with user interface design and it's probably worth having a stroll
through the source, even if you never get it running, just to get
a feeling for how they went about doing things.

I used to have the C++ version running but changes to gcc and ecgs
mean that it doesn't compile anymore (never use NULL anywhere in your
C or C++ code, there is nothing wrong with 0, believe me that putting
the word NULL in your code is shooting a big hole in your own foot).

	- Tel