Waldek Hebisch <[EMAIL PROTECTED]> writes: | Using sbcl profiler on Maitin's guessing package I identified | some time sinks: | 1) extendLocalLibdb function (which is called at the end of each | compilation). This function looks generally bogus -- it tries | to update libdb.text but is producing garbage (correct libdb.text | is built later, when databases are rebuild). Together with | addPatchesToLongLines this function caused sbcl to run out of | memory on 512 MB machine (extendLocalLibdb is responsible | for producing some long lines while memory usage of | addPatchesToLongLines on sbcl is quadratic with respect to | its argument). What matters for time usage is quadratic | union algorithm which extendLocalLibdb calls on old | content of libdb.text and new lines. | | 2) profileRecord function -- conses a lot and takes a lot of time. | AFAICS the information collected by profileRecord is unused. | | 3) searchCurrentEnv function -- apparanetly this function implements | the main compiler symbol table using linear search. | | After eliminating the first two problems profiler indicates that | about 60% of execution time goes into linear searches done by | searchCurrentEnv. I found some possibility for improvement | here: some searches can be easily eliminated. But ATM I do not see | how to get major improvement without a compiler rewrite: the symbol | table is shared with interpreter and both compiler and interpreter | in many places have dependency on current form of symbol table. | Also, compiler uses symbol table is such a way that it is not | clear if different form of symbol table would be more | efficient.
Yes. I'm rewriting part of the compiler in Spad -- it will take some time before it gets fully functional, but I do hope to make progress by the summer. -- Gaby _______________________________________________ Axiom-developer mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/axiom-developer
