[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Apology on NCDR/NTHCDR timings
- To: (BUG LISP) at MIT-MC
- Subject: Apology on NCDR/NTHCDR timings
- From: JONL at MIT-MC (Jon L White)
- Date: Thu, 21 Sep 78 23:06:00 GMT
- Original-date: 21 SEP 1978 1906-EDT
Thinking about the NCDR timings reported yesterday, I realized some
gross anomaly: HRRZ-SOJG is two instructions per cdr, and the compiled
lisp version takes about three instructions per cdr (due to the overhead
of getting in and out of a subroutinized CDDDDR). Trying it again,
I must confess, sad to say, I was comparing apples and oranges - the
compiler (with NCDR in it) has *RSET off, and the new lisp had it initially
on, so the NTHCDR loop being executed was the slow path with checking for
list-type at each cdr. The correct figures (in so far as the KL10 timing
clock can be considered "correct") with *RSET off are as follows, with
F5NCDR being an unrolling to a loop-length of 5, and F16NCDR an unrolling
to 16. Timings:
(NCDR l n) 12.us + 1.41*<n-1>us |compiled loop on (CDR (CDDDDR x))
(NTHCDR n l) 4.us + 0.93*<n-1>us |HRRZ-SOJG
(F5NCDR l n) 4.us + 0.68*<n-1>us |5 HRRZs + looping
(F16NCDR l n) 4.us + 0.52*<n-1>us |16 HRRZs + looping
Trial functions F5NCDR and F16NCDR can be found in MC:JONL;FNCDR LAP