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] |
> > 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