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

Re: faster-make-instance-patch.hqx ?

At 10:00 PM 9/30/93 -0600, Shannon V Spires wrote:
>Could we have some more details on faster-make-instance-patch.hqx?
>What does it do, how does it do it, and how much of a speedup
>should we expect? 
>Also, are there any side effects to it, or to cyclone-cursor-patch
>if we aren't using a cyclone?

faster-make-instance-patch eliminates some hash table lookups during
make-instance. One of the lookups is eliminated from every make-instance
call. The other lookup is prevented only if the first argument to
make-instance is a quoted symbol (the lookup is then done at load time
instead of run time).

Timing: (make-instance 'foo) where the class foo has no
applicable user defined make-instance, initialize-instance,
shared-initialize, or allocate-instance methods used to take 421
microseconds on a IIfx. With the patch loaded, it takes 189 microseconds.
After (defparameter *foo* 'foo), (make-instance *foo*) used to
take 420 microseconds on a IIfx. With the patch loaded it takes 295

The only known side effect of faster-make-instance-patch (other than
the speed improvement) is that if a file contains a call to make-instance
with a quoted symbol for the first argument, then a fasl file created from
that file with the faster-make-instance-patch loaded will error if loaded
into an MCL without the faster-make-instance-patch.

"cyclone-cursor-patch" stops the I-Beam and watch cursors from being
garbled on an 840av. It does this at the expense of removing the DWIM
from set-cursor, with-cursor, & *cursorhook*. If the cursor passed to
(or stored in) these is a macptr, it is assumed to be a handle, with
the exception of *arrow-cursor*, which is assumed to not be a handle.
Before, set-cursor called handlep to determine if a macptr was a
handle. This no longer works for ROM-resident cursors on the av macs.