cmucl slowdown



>>>>> "Rupert" == Rupert Swarbrick <rswarbrick at gmail.com> writes:

    Rupert> Raymond Toy <toy.raymond at gmail.com> writes:
    >>>>>>> "Dan" == Dan Gildea <dgildea at users.sourceforge.net> writes:
    Dan> It looks like, using cmucl 20c, the following commit
    Dan> makes cmucl take 442 seconds to execute the test suite, 
    Dan> whereas previously it took 125 seconds.
    >> 
    Dan> Not sure why - other lisps do not seem to be affected.
    >> 
    Dan> commit be0490a52b07153228dd19f5bb8145b035f1b188
    Dan> Author: Rupert Swarbrick <rswarbrick at gmail.com>
    Dan> Date:   Fri Sep 27 00:48:56 2013 +0100
    >> 
    >> Ouch! FWIW, I can confirm this slowdown using cmucl 20e.  The test
    >> suite takes 134 sec on commit cf77b9e, which is version before the
    >> above commit.
    >> 
    >> Ray

    Rupert> Eek, I'm terribly sorry: I did do performance tests on sbcl and gcl (I
    Rupert> think), but didn't check with cmucl.

    Rupert> I'll revert the change this evening: a performance regression even in a
    Rupert> single lisp isn't really ok. A pity, because the whole point was to try
    Rupert> to make some of the rat code a bit easier to reason about.

    Rupert> Ray: Have you any idea what makes cmucl extra slow here? I think I
    Rupert> prefer the semantics of the newer code, so maybe you can suggest a way
    Rupert> to do something similar without triggering whatever I hit?

Thanks for reverting. I haven't had a chance yet to dig into why your
change makes it run so slowly.  Creating a condition and establishing
a handler for it seems like it could be significantly slower than just
a catch/throw, but I wouldn't expect that the conditions to be thrown
so often to cause such a slowdown.

Ray