Initial port to CMUCL was slow. I incorrectly assumed that the problem
was the inefficient compute-discriminating-functions port, so I
rewrote it to be more efficient. The result of the rewrite is this
patch.
I later realized that the real problem came from the fact that I
didn't call mp::startup-idle-and-top-level-loops - apparently a
requirement for threaded applications on CMUCL. Weblocks cannot call
this directly, it should be called in the startup file (ideally not
from swank, as it tends to screw up slime).
So, I reverted the incorrect efficiency patch. It still makes CMUCL
port more efficient, but it doesn't seem to be the bottleneck. The
reason I'm reverting is because this code is likely to suffer from
race conditions (I am not 100% sure because CMUCL doesn't use native
threads).
I am sending the patch to the group in case it'll be of interest later.