After profiling and optimizing a drupal site of mine, I came to the point where loading modules was taking by far the majority of the time needed to produce most of the pages.
I've started on what may or may not turn out to be a series of low-memory versions of core and contributed modules that I use. The idea is to get the modules to behave more along the lines of Károly's (abandoned?) "split mode" -- to have them load code when necessary, rather than loading all code on every page. While it would be great to see Drupal's core provide more structure for ensuring this kind of behavior (kind of like how there's now a separate .install file), it's still possible to significantly reduce module memory usage and load time within the current framework.
There are a few differences between this "project" and split mode. In particular, I'm trying:
to do this in a way that does not require changing drupal's core, but only the module being affected
to minimize file I/O and code loaded into memory, and thus leaving functions that get called on every page (like hook_menu(FALSE) and hook_help()) as they are
to group functions into the same file where it seems reasonable to do so
I've create QueryCache module which allows to cache a query result for specific period of time. It works perfectly well with tables which harldly ever change during normal application utiliziation (like system, variables, etc.).
I have a drupal 5.1 site on an almost-empty Apple Xserve, fresh out of the box, freakin' fast...and my site is much slower than it was on my cheap host account!
I have a web design firm and would love to setup my Drupal site to handle all client accounting, billing, and project management. Has anybody done this? I will share how it goes for me...