1.5.97 first impression

Rob Browning rlb@cs.utexas.edu
09 Jun 2001 16:37:26 -0500


Kevin Finn <kevinfinn@mediaone.net> writes:

>      Upgrading to guile 1.4 made things a little faster once the
> splash screen came up (1-2 seconds rather than 5-6), but the time
> from starting the program until the splash screen appears is still
> the same, about 12 seconds.

I've been planning to work on gnucash performance issues some more for
a while, and kept putting it off until I had time to "do it
right(TM)".  However, your transaction-report load time kinda
agravated me, so I decided to at least check one of my suspicions.

For a while I'd wondered if the way we were using deeply nested
top-level environments in order to hide private bindings (which is a
good idea) might not be something that guile's evaluator expected, and
hence might be hammering a sore spot performance-wise.

So to test that I went ahead and converted transaction-report.scm into
a guile module -- (gnucash report transaction) and arranged for it to
be installed in a suitable place, etc.

Testing, I found that for the dummy case of just loading
transaction-report.scm, load times went from 4.2 seconds on my system
to 0.2 seconds.  Then I tested a full gnucash run like this:

  time gnucash --nofile \
    --evaluate '(gnc:depend "report/report-list.scm") (exit 0)'

before the modularization, this took 11 secs, and after 7, with only
transaction-report.scm changed.

So it seems like my suspicions were probably correct.  I'm going to go
ahead and modularize the rest of the reports (for consistency), and
then any other files that need it.  These fixes won't show up in
1.6.0, but look for a (hopefully) large --nofile startup speedup in
1.6.X.

Thanks for the report.

-- 
Rob Browning <rlb@cs.utexas.edu> PGP=E80E0D04F521A094 532B97F5D64E3930