;;; -*- Mode:LISP; Package:LISP-INTERNALS; Base:10; Readtable:CL -*- (defun create-n (n) (do ((n n (1- n)) (a () (push () a))) ((= n 0) a))) (defun div2 (l) (do ((l l (cddr l)) (a () (push (car l) a))) ((null l) a))) (defun dv2 (l) (cond ((null l) ()) (t (cons (car l) (dv2 (cddr l)))))) (defun test1 (l) (do ((i 300. (1- i))) ((= i 0)) (div2 l) (div2 l) (div2 l) (div2 l))) (defun test2 (l) (do ((i 300. (1- i))) ((= i 0)) (dv2 l) (dv2 l) (dv2 l) (dv2 l))) (defun test-div2 () (let ((l (create-n 200.))) (hw:write-microsecond-clock (hw:unboxed-constant 0)) (error "DIV2-ITERATIVE" (test1 l) (hw:read-microsecond-clock)) (hw:write-microsecond-clock (hw:unboxed-constant 0)) (error "DIV2-RECURSIVE" (test2 l) (hw:read-microsecond-clock)) (loop)))