Artifact 64ea57788dab463659e98083454a7e65f8ea6c502040cd160244cc6dfb414c77:
- File
psl-1983/3-1/tests/timer.notes
— part of check-in
[eb17ceb7f6]
at
2020-04-21 19:40:01
on branch master
— Add Reduce 3.0 to the historical section of the archive, and some more
files relating to version sof PSL from the early 1980s. Thanks are due to
Paul McJones and Nelson Beebe for these, as well as to all the original
authors.git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/historical@5328 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 3505) [annotate] [blame] [check-ins using] [more...]
- File
psl-1983/tests/timer.notes
— part of check-in
[eb17ceb7f6]
at
2020-04-21 19:40:01
on branch master
— Add Reduce 3.0 to the historical section of the archive, and some more
files relating to version sof PSL from the early 1980s. Thanks are due to
Paul McJones and Nelson Beebe for these, as well as to all the original
authors.git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/historical@5328 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 3505) [annotate] [blame] [check-ins using]
Some notes on the PSL "spectral" timing Tests Martin L. Griss March 17 1982 The tests in the file PT:PSL-TIMER.SL (which is compiled and then driven by calls in PT:TIME-PSL.SL) have been gathered by us, with assistance/requests/suggestions from Fateman and Foderaro at Berkeley, JONL White and George Charrette at MIT, and Gabriel at Stanford as part of hist tests for the analysis of different LISP systems. They range over a number of LISP fundamentals, such as function calling speed, compiler quality, simple EVAL speed, INUM/FIXNUM arithmetic, CAR/CDR speeds, CONS speed, Type-testing predicates, etc. In most cases, the times quoted are for N iterations of some basic loop, with N fixed at some convenient quantity; the current N is given. The tests first set up some lists, which are then used for CDR'ing and counting loops. These are: LONGLIST 1664 elements TESTLIST 1002 elements TESTLIST2 2002 elements TEST N Description and comments Empty 10k Fastest Empty loop, using INUM or FIXNUM arithmetic as measure of overhead. SlowEmpty 10k Empty loop using generic arithmetic, usually much slower than Empty because of subroutine call. The loop indices are still in INUM range, and some implementations may opencode part of the arithmetic. Cdr1 100 Cdr down LONGLIST N times, using ATOM to terminate. The loop is done using INUM arithmetic If there is no INUM/FIXNUM arithmetic, this time is swamped by arithmetic time. In PSL, ATOM test requires TAG extraction, while NULL test is just an EQ with NIL. In some implementations CAR and CDR require the TAG to be masked off with an extra instruction, while in others the hardware ignores the tag field in addressing operations, speed this up. Cdr2 100 Cdr down LONGLIST N times, using NULL to terminate. Compare with CDR1 tests. Cddr 100 Cddr down LONGLIST N times, using NULL to terminate Note that some time CDDR is done better than just CDR since addressing modes may help. ListOnlyCdr1 Cdr down TESTLIST, length TESTLIST times, using NULL These LISTONLY... tests do not use arithmetic to loop. ListOnlyCddr Cddr down TESTLIST, length TESTLIST times, using NULL ListOnlyCdr2 Cdr down TESTLIST, length TESTLIST, using ATOM This does not use arithmetic to loop. ListOnlyCddr Cddr down TESTLIST2, length TESTLIST times, using ATOM. Reverse 10 Call system reverse on LONGLIST, N times. This CONS's a lot, also some SYSTEM reverse's handcoded, e.g. LISP 1.6. MyReverse1 10 Reverse compiled, using ATOM to terminate MyReverse2 10 Reverse compiled, using NULL to terminate Length 100 Built-in length, on LONGLIST. Arithmetic 10k Call FACTORIAL 9, N times, generic arithmetic. Looping as in EMPTYtest. Eval 10k EVAL EvalForm N times. EvalForm is (SETQ FOO (CADR '(1 2 3))) . tak 18 12 6 Gabriel's test function that has been used on MANY LISP systems. Using INUM/FIXNUM arithmetic. gtak 18 12 6 As above, using Generic arithmetic. gtsta g0 Charrete's FUNCALL/APPLY test. 100000 loops on (APPLY F (list I)) or (FUNCALL F I), whichever exists and is fastest in system. [PSL converts (APPLY F (list I)) into a fast-apply]. g0 is a NOOP. gtsta g1 g1 calls ADD1