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