SBCL has a reputation of being slow at compiling programs. This has historically been a deserved reputation, since the cleanups done after the fork from CMUCL made the compiler a lot slower. While speed doesn't really matter when compiling individual functions, it's very important for large programs. Even if most Lisp development is done interactively, compiling a function or a file at a time, at some point one needs to ensure that the system still builds from scratch. With a large code base, this can take ages. It doesn't help that doing correct incremental builds for large Lisp systems is challenging. (See Andreas' asdf-dependency-grovel for one way to make it less painful).

In fact, most of my early contributions to SBCL were for making the compiler faster, since on the computer I had at the time an SBCL build took 1.5 hours. And even several workstation upgrades later, I still sigh every time I kick off a full SBCL build.

I just committed another batch of compiler speedup patches, and got to wondering what the cumulative effect of all these improvements over the years has been. So I ran my standard compilation speed benchmark suite on current CVS head, and on SBCL versions from one, two and three years ago. All SBCLs were built for x86, with the default build options. CMUCL 19d was also included in the test for comparison.

Here are the results (click on thumbnail for a larger image):

I'm pretty happy about the consistent trend for faster compilation times, despite new features and optimizations getting added, which usually act to slow down the compiler.

So the next time you're cursing about how long your build of McCLIM - or something similar - is taking, remember that things could be worse. You could be using SBCL 0.8.8 :-)