[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Axiom-developer] Compiler speed

From: Waldek Hebisch
Subject: [Axiom-developer] Compiler speed
Date: Mon, 7 May 2007 03:28:49 +0200 (CEST)

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 

                              Waldek Hebisch

reply via email to

[Prev in Thread] Current Thread [Next in Thread]