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

Re: PCL benchmark

I, and probably everyone else who has written a large, time-intensive
program with PCL, have noticed the same problems.  The current
implementation of PCL has a number of serious performance bugs that
Gregor is aware of.  PCL consumes about 80% of the time in my code.

The first bug is that the caches for the discriminator functions have
32 entries.  While a fixed-size cache works for some generic
functions, it fails miserably for generic functions with more than 32
methods (20% of the time spend in one discriminator function).
Compounding this problem is the slow speed of the cache miss code
(20-30% of the time).

The second bug is that MAKE-INSTANCE is incredibly expensive.  The
metaobject hair and parsing property list make for nice, general
systems that are too expensive to use in real programs.  In fact, I'd
argue that the CLOS standard should be rejected on this grounds!
Gregor has a workaround that involves using another constructor that
can be precompiled.  This extension is, however, not part of CLOS and
so will not be portable.

Gregor is aware of these problems and may have fixed them for the next
release.  I certainly hope so and I doubt that I'm the only one.