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

Validity of your off-the-wall timing conjectures



    Date: 26 October 1981 14:38-EST
    From: George J. Carrette <GJC at MIT-MC>
    To: JONL at MIT-MC
    I ran my timing tests with *RSET both on an off. You get a factor of 3
    speed-up with *RSET off. Still not good enough. ... 

The speed-up factor for typical NIL data-emulation functions is 40. to 70., 
not 3 as your reply suggests (in particular, the CHAR and BIT1P functions).

Apart from the fact that your "timings" were not accompanied by any numbers, 
there is reason to believe you neglected to factor out the GC time:  the fact 
that I had to remind you about the *RSET factor suggests this, but even more 
critically, you were simply unaware of extensive amount of checking (in *RSET 
mode) in the NIL-data-type emulation functions.  Long before you were around,
RWK, REES, RLB and I insisted on the capability for full error checking
in *RSET mode.

Forgetting about your totally off-the-wall comparison between the VAX and the 
PDP10 ("apples" and "oranges", since PDP10 doesn't have load-byte-indexed),
there is the question of why you mailed off your unsupported conjectures
to the BUG-LISP community.   If you intended to press for faster emulation
on the PDP10, then you completely blew it, for you didn't even make any 
timings of the alternative emulation schemes.  Furthermore, you obviously 
hadn't considered the memory constraints (*** and data size limitations ***) 
imposed by the alternatives (for example, limitation of 512. chars for a 
STRING, or consing n fixnums for a BITS in addition to the hunk space taken)

    Date: 26 October 1981 18:12-EST
    From: George J. Carrette <GJC at MIT-MC>
    Subject: Timing worries.
    ...
    However, you are not one to talk about what most of the nil system
    code needs, since you haven't written any of it. In particular the
    assembler handles BITS in its own way.
    ...

WRONG!
The assembler uses the emulation BITS package.  In particular, it needs
NIBBLE and SET-NIBBLE, and for these, the emulation is efficient.
During debugging of the assembler (a process which continued for at
least a year), RLB appreciated the *RSET mode;  after that we ran it in 
*RSET () mode without problem.

I know code I've written -- if you've replaced it with your own version
of things (as you generally seem to do), then that's just one more
reason why the NIL project is one year and four months behind schedule.