[armedbear-devel] Performance of ABCL?

Žiga Lenarčič ziga.lenarcic at gmail.com
Fri Sep 25 09:47:27 UTC 2009


> It's great to see you testing ABCL! Yes, it's rather slow, that's
> true. We know the performance can be improved by about 30% quite
> easily. However, the effort to do so lies with the Maxima team: In
> ABCL, access to special variables is rather slow. Maxima uses global
> special variables with names which are later used as local non-special
> variables. However, since they have been declared special (globally),
> that code takes the "variable is special"-slowness hit too.
> The solution on the side of Maxima is to rename all variables which
> are meant to be globally special to the CL naming scheme  where the
> name is put between asterisks.

So the naming of the variables affects the speed? Asterisk around  
names gives faster dynamic variables?

Maxima uses too many dynamic variables in general probably - in that  
sense it's a badly written software.

> Right. However, we really want to improve general and specific
> performance. So, if you have some time to analyse which functions in
> Maxima consume the most execution time, then maybe we can find out
> together how to adapt ABCL to perform better in that area?

Probably the same amount can be done on Maxima's side (to improve  
it's performance) as on ABCL's, but the situation is the same on both  
projects - it's volunteer work, so larger restructuring usually  
doesn't happen (at least in Maxima)...

I didn't mean to 'complain' about ABCL's speed - it's already an  
impressive piece of software, especially considering it's open source  
and it hasn't got that many developers. Of course I'm aware that SBCL  
is derived from CMUCL which has been developed by government paid  
developers (and Clozure CL used to be a commercial product) so the  
comparison with ABCL is unfair considering man hours invested in each  
project. Considering ABCL's origin and it's rather intense  
development phase in the last year or so, it's a very 'professional'  
lisp implementation today. I merely wanted to know, how much 'room'  
is there to improve it's speed :)

I was really impressed when the Maxima's testsuite ran without errors  
(except some small floating point differences) and even more when I  
opened a Swing window from within common lisp, which is (GUI) usually  
very hard to do using other non commercial Common Lisps!

Thanks for your responses and for your work on ABCL!


More information about the armedbear-devel mailing list