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

Re: problem/suggestion



    Date: Fri, 27 Apr 90 10:19:54 PDT
    From: Don Cohen <donc@vaxa.isi.edu>

    I'm running :RAINY-DAY-PCL on symbolics genera7.2 and having problems
    with a method that has a large number (~200) of methods specialized by
    EQL.  (It's a code walker and methods are specialized by lisp
    functions/special forms/macros/ ...)  The problem seems to be in
    get-normal-secondary-dispatch-function calling get-function calling
    get-function-generator calling get-new-function-generator calling the
    compiler with a lambda expression containing a very long argument list.
    (Is this really necessary?)

    Also, generate-discrimination-net seems to (in addition to running 
    a long time) produce a terrible algorithm.  Instead of compiling 
    into a deeply nested conditional, I suggest a hashtable for all the 
    EQL methods (if there are more than some threshold number).

It is true that the Rainy Day PCL implementation of EQL specializers is
pretty bad.  Its almost as bad as EQL specializers themselves!  I am not
going to fix this, because PCL development is now essentially over.

In your particular case, where the code in question sounds like it is
program or at the very least macro generated, you might want to consider
switching away from using EQL specializers to using a hash table.  Use
the hash table for the discrimination on individual objects (symbols in
your case) and use generic function for discrimination on classes.