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

Re: PCL 70 times slower than Ernie with 1000 cars.



Some notes on the carwash program.

1) random
   The carwash generates its data using a series of calls to
   the function RANDOM.  Thus comparisons of this program in
   different CL implementations will (probably) be using 
   different data.  Since the data generation program,
   GENERATE-CARS, uses (EVAL `(DEFVAR ...)) and RANDOM,
   some care must be taken to get exactly reproducable data
   even in one CL implementation.

2) fraction of the time spent in pcl
   The data that I have gathered and summarized below indicates that
   it is impossible to speed up the carwash program by more than 25%
   by improving PCL.  I think that the version of this program that
   is written in ERNIE really isn't as similar as you say it is. Try
   changing the carwash program so that it runs without alteration of
   the source code in either PCL or ERNIE (using macros and #+), and
   reporting timings you get from that.  (If you do this, I would like
   to get a copy of your code).

All the times here were measured on a SUN4/280 using PCL 8/28/88
with some patches and akcl-1-79 with some patches.
The estimated times were computed using the average times reported below.

+++++ 200 cars, instrumented           estimated run times
conses                       557399
  (by explicit calls to cons, list, and append in the carwash program)
CachingDF method calls        29637         1.0 secs
  cache misses                  340         0.2 secs
ReaderDF method calls        191502         6.1 secs
  cache misses                   14         0.0 secs
WriterDF method calls         50593         1.6 secs
  cache misses                   11         0.0 secs
Reads                             0
  Get-Slot-Value cache misses     0
Writes                            0
  Set-Slot-Value cache misses     0
(slot-value is called in only one place in this program;
 I believe that slot-value performance does not matter here)
real time                      91.9 secs
run time                       83.5 secs     
+++++ 200 cars, uninstrumented         estimated run time of PCL operations
real time                      48.3 secs
run time                       37.0 secs     9.0 secs

+++++ 100000 calls to a CachingDF
      (2 args, no rest arg, disc. on first arg only)
real time                       3.8 secs
run time                        3.4 secs
+++++ 10000 calls to pcl::caching-dcode-miss
      (2 args, no rest arg, disc. on first arg only)
real time                       6.6 secs
run time                        5.9 secs
+++++ 100000 calls to a ReaderDF
real time                       3.6 secs
run time                        3.2 secs
+++++ 100000 calls to a WriterDF
real time                       3.3 secs
run time                        3.2 secs


Rick Harris