[armedbear-devel] progress on Maxima + ABCL -- light at the end of the tunnel!
Erik Huelsmann
ehuels at gmail.com
Fri Aug 7 20:20:02 UTC 2009
>> Well, for the purpose of testing the performance impact of
>> being able to declare "unspecial", I hacked into ABCL an
>> UNDEFVAR primitive function and adjusted lmdcls.lisp accordingly.
>>
>> The change takes ABCL from ~3300 seconds to ~ 2020 seconds
>> evaluation time for Maxima's test suite.
>
> Wow, that's great.
>
>> It looks to me like - although I agree with you about the
>> archaic nature of it - that Maxima would greatly benefit from
>> (at least with ABCL) specials to be defined more locally:
>> it's more Common Lisp if it does.
>
> Agreed.
>
> About unspecial versus dropping specials automatically at
> the end of file, I don't have a strong preference, but I am
> leaning towards automatically dropping them.
Ok. I tried a different strategy: I've made (in my local copy) "local"
special bindings available for direct manipulation, instead of through
the functional interface (which does a lookup, every time). The result
was somewhat disappointing: without the "unspecial" stuff, it shaves
off only 200 seconds (out of 3300); meaning roughly 7% savings.
When I apply the "unspecial" patch (also locally), the additional
special bindings change doesn't even make a difference (only a few
seconds evaluation time difference with the version without).
> I can't tell if Maxima expects specials to be carried over
> from one file to the next; some code might be written
> assuming they are, but some other code might be
> written assuming they are not. Be that as it may, I'm
> pretty sure the unspecial declaration works for only a
> few Lisps (for the others it's just a no-op iirc).
>
> I wonder what other Lisps do.
So do I, really.
In ABCL, it's a fair amount of work to "unbind" a special (reverse
established special bindings); it's possible other lisps have less
work to do in that respect.
Bye,
Erik.
More information about the armedbear-devel
mailing list