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]

boot-9.scm cleanup.


I have just tried a bit of hacking on boot-9.scm to get some idea of what
can easily be removed or modularised (sp? modulated? put in a module:-).

The rough order of boot-9.scm is this

r4rs.scm
sundry bits (debugging, integer math, trivial definitions  etc)
line-io
arrays * 
more bits (records, structs, list-fun ...)
posix *
transcendental functions *
reader extensions
module system (here be dragons. I did not touch)
iota *
top-repl
modules are then loaded
    readline
    debug
    session
    threads
    emacs
    regex
 
The things marked with a * can be removed and guile still boots. This is
not an exhaustive list, I just haven't tried some of the others. Obviously
these parts are very good candidates for moving to loadable modules. 
 
On a typical interactive startup, with threads, about half the execution time
is spent in the last page, loading modules once the module system is 
set up. I don't pretend to understand the existing module system; it has
pages and pages of code, but I can see why it really slows down definitions.
Of the rest of the time, a large fraction is clearly spent setting the module 
system up. Godot will do more of this in C, which will be much quicker.

Here are my suggestions for short term improvements to the startup speed.

- Move genuinely optional stuff (like arrays,posix, iota) into modules; it will 
be slower for those of us who use it but faster for everybody else. This is also
attractive from the name-space point of view. 

- Replace the transcendental functions with C-code; not only faster to boot
but also faster at run time, and likely to be stable. (I think it will
be about 5% faster to boot). Does anybody use them by the way?

- Wait for godot; I am sure that a C supported module system will solve most of
this.

Julian Satchell
<satchell@dera.gov.uk>