Hi Robert, hi all,
Today, I ran Maxima through ABCL's profiler to see what's our current status. With our combined changes, we seem to have reduced the throughput time of the Maxima tests on my system from 2200 secs to roughly 1800 secs between October and now.
These are the hotest spots now:
3.0 4352336 SIGN01 3.0 4354363 $SIGN 3.1 4531219 MEVALARGS 3.2 4633287 MREAD-RAW 3.2 4633902 MREAD 3.3 4740203 SIGN1 3.7 5402701 SIMPEXPT 4.4 6365392 $FLOAT 4.5 6469447 RECUR-APPLY 4.5 6521950 TEST-BATCH 5.8 8452081 SIMPLIFYA 8.4 12224550 NUD-CALL 11.3 16314266 DLSF 11.3 16362213 DLS 12.2 17658492 PRSMATCH 12.4 17982535 DGRF 12.5 18054353 DGR 20.6 29854294 PARSE-INFIX 22.3 32246473 MEVAL* 22.4 32372076 MEVALN 54.5 78912363 LED-CALL 55.5 80291167 PARSE 59.5 86114793 MEVAL1 60.7 87813616 MEVAL 64.2 92947288 MHEADER 65.2 94346436 STREAM-NAME 65.2 94346559 INSTREAM-NAME 65.2 94346854 PATHNAME 65.2 94347835 ADD-LINEINFO
As you can see, the DGR(F) functions which relate to the integrator tests have now been removed from being the main bottle necks. It looks like some evaluator is now our 'hottest' spot. Robert, could you help us to see what we should do to optimize the functions which are now our main performance issue?
Thanks in advance!
Bye,
Erik.
--- On Fri, 1/29/10, Erik Huelsmann ehuels@gmail.com wrote:
Today, I ran Maxima through ABCL's profiler to see what's our current status. With our combined changes, we seem to have reduced the throughput time of the Maxima tests on my system from 2200 secs to roughly 1800 secs between October and now.
Great, thanks for the update. Now that we seem to have squashed the special binding bugs, maybe it's appropriate to think about making it run faster.
By the way I recently tested Maxima + ABCL on a Linux box and found it about 3 times as slow as Clisp, which in turn is about 3 times as slow as GCL (which is the fastest Lisp for running Maxima from what I know).
These are the hotest spots now:
3.0 4352336 SIGN01 3.0 4354363 $SIGN 3.1 4531219 MEVALARGS 3.2 4633287 MREAD-RAW 3.2 4633902 MREAD 3.3 4740203 SIGN1 3.7 5402701 SIMPEXPT 4.4 6365392 $FLOAT 4.5 6469447 RECUR-APPLY 4.5 6521950 TEST-BATCH 5.8 8452081 SIMPLIFYA 8.4 12224550 NUD-CALL 11.3 16314266 DLSF 11.3 16362213 DLS 12.2 17658492 PRSMATCH 12.4 17982535 DGRF 12.5 18054353 DGR 20.6 29854294 PARSE-INFIX 22.3 32246473 MEVAL* 22.4 32372076 MEVALN 54.5 78912363 LED-CALL 55.5 80291167 PARSE 59.5 86114793 MEVAL1 60.7 87813616 MEVAL 64.2 92947288 MHEADER 65.2 94346436 STREAM-NAME 65.2 94346559 INSTREAM-NAME 65.2 94346854 PATHNAME 65.2 94347835 ADD-LINEINFO
Hmm, I guess the first column = seconds elapsed and second column = # function calls? This seems to show that functions in the parser (MHEADER and all the rest below that in the list) are using more time than any others.
The code to paste debugging info into parsed expressions (ADD-LINEINFO and friends) is more than a little bit strange ... I wouldn't be surprised if it could be improved in some ways.
Thanks for your help!
Robert Dodier
armedbear-devel@common-lisp.net