Guile 2 performance

Geert Janssens janssens-geert at
Tue Nov 26 13:59:24 EST 2013

The people at the guile irc channel asked me for some performance tests in gnucash comparing 
gnucash/guile1.8 vs gnucash/guile2.0.

I thought our GnuCash devs could be interested as well, so here goes:

I have conducted two tests:
1. run make check 20 times in the src/report/standard-reports directory. I have chosen that 
directory because the tests are fairly heavy and almost purely in scheme. So the time to run the 
tests is a good indicator of the relative performance of the two guile versions.

2. start gnucash --nofile a couple of times in a row and time how long it takes to display the 
main window. This is not a very accurate test - I looked at the wall clock to measure this. But 
startup time is something users are sensitive to, so it would be interesting to check for 

Note that guile 2 now compiles its source files. This happens automatically whenever a file is 
newer than the last compiled version. For an installed gnucash, this should happen only once 
(at first startup) and hence is not representative of the user's experience. So for the 
gnucash/guile 2 test, I have first run make check and started the application once before doing 
my performance tests. As such, (one time) compile times are not part of the test results.

The results:
20x standard-reports tests:
- guile 1.8: real: 3m59s  user: 2m40s  sys: 0m9s
- guile 2.0: real: 2m48s  user: 1m45s  sys: 0m11s
Startup time (wall clock time to show main window, test run 3 times at least)
Average time is given:
- guile 1.8: 13s (consistently)
- guile 2.0: 9s (consistently)

That means that guile 2 improves the test performance with about 30% compared with guile 
1.8 and reduces the startup time with about 30% as well.

That's a nice improvement we get for free without even optimizing our own code IMO :)


More information about the gnucash-devel mailing list