Hi!
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!
Regards, Ziga