[armedbear-devel] Performance of ABCL?
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