From: bil@cmn16.Stanford.EDU (Bill Schottstaedt)
Subject: Re: shared :initarg problem in August 4 PCL
Organization: DSO, Stanford University
Date: Fri, 28 Aug 92 14:22:17 GMT

(from Rick Taube, hkt@zkm.de):

Thanks for posting the :initargs fix for August 4 PCL. I was able to  
compile and everything seems to be working now.  However, upon doing  
a benchmark between "March 92 PCL (2c)" and August 4 (using the  
bench-this-clos code that was posted to comp.lang.lisp by  
jmorrill@bbn.com a few days ago) I got some results that I did not  
expect:  March 92 ran the suite much faster then August 4.  From  
reading the newgroup, I had expected the Aug 4 release to be the same  
or maybe a bit faster with respect to slot-access.  I ran the  
benchmark on the same machine (Next Cube 16Megs) in the same base  
lisp (Allegro CL 3.1.20 [NeXT] (3/7/91)). Only the pcl versions are  
different.

I'm pretty sure that something somewhere isnt right in Aug 4 because  
I called out of the make-instance benchmark after 15 minutes had  
passed!  I then compiled and ran simple make-instance timing test of  
my own:

(defun test () (time (dotimes (i 500) (make-instance 'midi-note))))

and the results were:
August 4:
	<cl>  (test)
	cpu time (non-gc) 20,200 msec user, 6,034 msec system
	cpu time (gc)     0 msec user, 0 msec system
	cpu time (total)  20,200 msec user, 6,034 msec system
	real time  44,256 msec

March 2c:
	<cl>  (test)
	cpu time (non-gc) 1,850 msec user, 434 msec system
	cpu time (gc)     0 msec user, 0 msec system
	cpu time (total)  1,850 msec user, 434 msec system
	real time  3,485 msec

One other thing worth noting - in March PCL I raised the number of  
iterations in the default method result shown below from 1000000 to  
2000000, but it looks as if March 4 performs some compiling  
optimizations that August 4 doesnt in the case of a default method  
like: (defmethod strange ((x t)) t)

There is such a difference in general that I dont really know which  
set of numbers to believe. According to the comments in the benchmark  
suite, the number printer is the operations per second.
--------------------------------------------------------------------
                                        March 2c       August 4
1 default method:                    487,804.9        7,027.4067
1 dispatch, 1 method:                 92,592.586     20,631.318
1 dispatch, :around + primary:        24,919.014      3,800.4028
1 dispatch, 3 methods, instance:      81,866.555     13,518.993
1 dispatch, 3 methods, noninstance:   16,863.406      9,541.984
2 dispatch, 2 methods:                59,224.16      79,176.56
slot reader method:                  140,154.17      37,792.895
with-slots (1 access):                58,360.082      5,737.2354
with-slots (1 modify):                54,141.85       5,556.482
naked slot-value:                      9,385.266      2,445.1672
class-of instance:                    54,644.81      61,996.277
class-of noninstance:                 20,597.322     20,631.318
allocate-instance (2 slots):           4,310.3447     1,557.1473
make-instance (2 slots):                 691.85004    ---
make-instance (2 constant initargs):     674.3998     ---
make-instance (2 variable initargs):     660.15314    ---