performance measurements

Each table row shows performance measurements for this Lisp SBCL program with a particular command-line input value N.

 N  CPU secs Elapsed secs Memory KB Code B ≈ CPU Load
120.4321,320553  
140.9528,260553  
163.7236,324553  

Read the ↓ make, command line, and program output logs to see how this program was run.

Read binary-trees benchmark to see what this program should do.

 binary-trees Lisp SBCL #2 program source code

;;; -*- mode: lisp -*-
;;;
;;; http://shootout.alioth.debian.org/
;;;
;;; From: Manuel Giraud
;;; Nicer rewrite: Nicolas Neuss
;;; Modified by Juho Snellman 2005-10-26
;;;  * Change the node representation from a struct to an improper list
;;;    (saves 8 bytes for each node on SBCL/CMUCL)
;;;  * Use NIL for leaf nodes, as in the Haskell solution
;;;  * Add command-line parsing for non-CMUCL implementations
;;; De-optimized by Isaac Gouy

;;; Node is either NIL (for leaf nodes) or an improper list (DATA LEFT . RIGHT)
(defun build-btree (item depth)
  (declare (fixnum item depth))
  (if (zerop depth)
      (cons item
            (cons nil nil))
;;;      nil
      (let ((item2 (* 2 item))
            (depth-1 (1- depth)))
        (declare (fixnum item2 depth-1))
        (cons item
              (cons (build-btree (the fixnum (1- item2)) depth-1)
                    (build-btree item2 depth-1))))))

(defun check-node (node)
  (declare (values fixnum))
  (if node
      (let ((data (car node))
            (kids (cdr node)))
        (declare (fixnum data))
        (- (+ data (check-node (car kids)))
           (check-node (cdr kids))))
      0))

(defun loop-depths (max-depth &key (min-depth 4))
  (loop for d from min-depth by 2 upto max-depth do
        (let ((iterations (ash 1 (+ max-depth min-depth (- d)))))
          (format t "~D~C trees of depth ~D~C check: ~D~%"
                  (* iterations 2) #\tab d #\tab
                  (loop for i from 1 upto iterations
                        sum (check-node (build-btree i d))
                        sum (check-node (build-btree (- i) d)))))))

(defun main (&optional (n (parse-integer
                           (or (car (last #+sbcl sb-ext:*posix-argv*
                                          #+cmu  extensions:*command-line-strings*
                                          #+gcl  si::*command-args*))
                               "1"))))
  (format t "stretch tree of depth ~D~C check: ~D~%" (1+ n) #\tab
          (check-node (build-btree 0 (1+ n))))
  (let ((*print-pretty* nil) (long-lived-tree (build-btree 0 n)))
    (loop-depths n)
    (format t "long lived tree of depth ~D~C check: ~D~%"
            n #\tab (check-node long-lived-tree))))

;;(main)

 notes

 

 make, command-line, and program output logs

BUILD COMMANDS FOR: binarytrees.sbcl-2.sbcl

Wed Jun 25 21:39:56 PDT 2008

SBCL built with: /usr/bin/sbcl --userinit /dev/null --sysinit /etc/sbclrc -batch -eval '(load "binarytrees.sbcl-2.sbcl_compile")'
### START binarytrees.sbcl-2.sbcl_compile
(proclaim '(optimize (speed 3) (safety 0) (debug 0) (compilation-speed 0) (space 0)))
(handler-bind ((sb-ext:defconstant-uneql      (lambda (c) (abort c))))      (load (compile-file "binarytrees.sbcl-2.sbcl" ))) (save-lisp-and-die "sbcl.core" :purify t)
### END binarytrees.sbcl-2.sbcl_compile

; loading system definition from
; /usr/share/common-lisp/systems/asdf-binary-locations.asd into
; #
; registering # as ASDF-BINARY-LOCATIONS

; compiling file "/home/dunham/gp4/shootout/bench/binarytrees/tmp/binarytrees.sbcl-2.sbcl" (written 25 JUN 2008 09:39:56 PM):
; compiling (DEFUN BUILD-BTREE ...)
; compiling (DEFUN CHECK-NODE ...)
; compiling (DEFUN LOOP-DEPTHS ...)
; file: /home/dunham/gp4/shootout/bench/binarytrees/tmp/binarytrees.sbcl-2.sbcl
; in: DEFUN LOOP-DEPTHS
;     (LOOP FOR D FROM MIN-DEPTH BY 2 UPTO MAX-DEPTH DO
;         (LET ((ITERATIONS (ASH 1 #)))
;           (FORMAT T "~D~C trees of depth ~D~C check: ~D~%" (* ITERATIONS 2)
;                   #\Tab D #\Tab
;                   (LOOP FOR I FROM 1 UPTO ITERATIONS SUM (CHECK-NODE #) SUM
;                         (CHECK-NODE #)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY WHEN IF 
; ==>
;   (> D #:LOOP-LIMIT-5)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a SINGLE-FLOAT.
;   The second argument is a REAL, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a DOUBLE-FLOAT.
;   The second argument is a REAL, not a SINGLE-FLOAT.
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
;   The second argument is a REAL, not a RATIONAL.

;     (+ MAX-DEPTH MIN-DEPTH (- D))
; --> + 
; ==>
;   (+ MAX-DEPTH MIN-DEPTH)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a RATIONAL.
;   The second argument is a REAL, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
;   The second argument is a REAL, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a SINGLE-FLOAT.
;   The second argument is a REAL, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a DOUBLE-FLOAT.
;   The second argument is a REAL, not a SINGLE-FLOAT.

; ==>
;   (+ (+ MAX-DEPTH MIN-DEPTH) (- D))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a RATIONAL.
;   The second argument is a REAL, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
;   The second argument is a REAL, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a SINGLE-FLOAT.
;   The second argument is a REAL, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a DOUBLE-FLOAT.
;   The second argument is a REAL, not a SINGLE-FLOAT.

;     (LOOP FOR D FROM MIN-DEPTH BY 2 UPTO MAX-DEPTH DO
;         (LET ((ITERATIONS (ASH 1 #)))
;           (FORMAT T "~D~C trees of depth ~D~C check: ~D~%" (* ITERATIONS 2)
;                   #\Tab D #\Tab
;                   (LOOP FOR I FROM 1 UPTO ITERATIONS SUM (CHECK-NODE #) SUM
;                         (CHECK-NODE #)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ SETQ THE 
; ==>
;   (+ D 2)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

;     (LOOP FOR I FROM 1 UPTO ITERATIONS SUM (CHECK-NODE (BUILD-BTREE I D)) SUM
;         (CHECK-NODE (BUILD-BTREE (- I) D)))
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY SETQ THE 
; ==>
;   (+ #:LOOP-SUM-7 (CHECK-NODE (BUILD-BTREE I D)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).

; ==>
;   (+ #:LOOP-SUM-7 (CHECK-NODE (BUILD-BTREE (- I) D)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).

;     (LOOP FOR D FROM MIN-DEPTH BY 2 UPTO MAX-DEPTH DO
;         (LET ((ITERATIONS (ASH 1 #)))
;           (FORMAT T "~D~C trees of depth ~D~C check: ~D~%" (* ITERATIONS 2)
;                   #\Tab D #\Tab
;                   (LOOP FOR I FROM 1 UPTO ITERATIONS SUM (CHECK-NODE #) SUM
;                         (CHECK-NODE #)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY WHEN IF 
; ==>
;   (> D #:LOOP-LIMIT-5)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline float comparison (cost 3) because:
;       The first argument is a REAL, not a DOUBLE-FLOAT.
;       The second argument is a REAL, not a DOUBLE-FLOAT.
;       unable to do inline float comparison (cost 3) because:
;       The first argument is a REAL, not a SINGLE-FLOAT.
;       The second argument is a REAL, not a SINGLE-FLOAT.
;       etc.

;     (+ MAX-DEPTH MIN-DEPTH (- D))
; --> + 
; ==>
;   (+ MAX-DEPTH MIN-DEPTH)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a REAL, not a DOUBLE-FLOAT.
;       The second argument is a REAL, not a DOUBLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES DOUBLE-FLOAT &REST
;                                                              T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a REAL, not a SINGLE-FLOAT.
;       The second argument is a REAL, not a SINGLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES SINGLE-FLOAT &REST
;                                                              T).
;       etc.

;     (- D)
; ==>
;   (SB-KERNEL:%NEGATE D)
; 
; note: forced to do GENERIC-NEGATE (cost 10)
;       unable to do inline float arithmetic (cost 1) because:
;       The first argument is a REAL, not a DOUBLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES DOUBLE-FLOAT &REST
;                                                              T).
;       unable to do inline float arithmetic (cost 1) because:
;       The first argument is a REAL, not a SINGLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES SINGLE-FLOAT &REST
;                                                              T).
;       etc.

;     (+ MAX-DEPTH MIN-DEPTH (- D))
; ==>
;   (+ (+ MAX-DEPTH MIN-DEPTH) (- D))
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a REAL, not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.
;       The result is a (VALUES INTEGER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a REAL, not a (SIGNED-BYTE 32).
;       The second argument is a REAL, not a (SIGNED-BYTE 32).
;       The result is a (VALUES INTEGER &OPTIONAL), not a (VALUES
;                                                          (SIGNED-BYTE 32) &REST
;                                                          T).
;       etc.

;     (ASH 1 (+ MAX-DEPTH MIN-DEPTH (- D)))
; 
; note: forced to do full call
;       unable to do inline ASH (cost 3) because:
;       The second argument is a INTEGER, not a (UNSIGNED-BYTE 29).
;       The result is a (VALUES UNSIGNED-BYTE &OPTIONAL), not a (VALUES FIXNUM
;                                                                       &REST T).
;       unable to do inline ASH (cost 3) because:
;       The second argument is a INTEGER, not a (UNSIGNED-BYTE 29).
;       The result is a (VALUES UNSIGNED-BYTE &OPTIONAL), not a (VALUES FIXNUM
;                                                                       &REST T).
;       etc.

;     (* ITERATIONS 2)
; ==>
;   (ASH SB-C::X 1)
; 
; note: forced to do full call
;       unable to do inline ASH (cost 2) because:
;       The first argument is a UNSIGNED-BYTE, not a FIXNUM.
;       The result is a (VALUES UNSIGNED-BYTE &OPTIONAL), not a (VALUES FIXNUM
;                                                                       &REST T).
;       unable to do inline ASH (cost 3) because:
;       The first argument is a UNSIGNED-BYTE, not a (UNSIGNED-BYTE 32).
;       The result is a (VALUES UNSIGNED-BYTE &OPTIONAL), not a (VALUES
;                                                                (UNSIGNED-BYTE
;                                                                 32)
;                                                                &REST T).
;       etc.

;     (LOOP FOR I FROM 1 UPTO ITERATIONS SUM (CHECK-NODE (BUILD-BTREE I D)) SUM
;         (CHECK-NODE (BUILD-BTREE (- I) D)))
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN IF 
; ==>
;   (> I #:LOOP-LIMIT-6)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 1 536870912), not a FIXNUM.
;       The second argument is a UNSIGNED-BYTE, not a FIXNUM.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY SETQ THE 
; ==>
;   (+ #:LOOP-SUM-7 (CHECK-NODE (BUILD-BTREE I D)))
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a NUMBER, not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

; ==>
;   (+ #:LOOP-SUM-7 (CHECK-NODE (BUILD-BTREE (- I) D)))
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a NUMBER, not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

;     (LOOP FOR D FROM MIN-DEPTH BY 2 UPTO MAX-DEPTH DO
;         (LET ((ITERATIONS (ASH 1 #)))
;           (FORMAT T "~D~C trees of depth ~D~C check: ~D~%" (* ITERATIONS 2)
;                   #\Tab D #\Tab
;                   (LOOP FOR I FROM 1 UPTO ITERATIONS SUM (CHECK-NODE #) SUM
;                         (CHECK-NODE #)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ SETQ THE 
; ==>
;   (+ D 2)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a REAL, not a FIXNUM.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a REAL, not a FIXNUM.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       etc.

;     (LOOP FOR I FROM 1 UPTO ITERATIONS SUM (CHECK-NODE (BUILD-BTREE I D)) SUM
;         (CHECK-NODE (BUILD-BTREE (- I) D)))
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; ==>
;   (SETQ I (1+ I))
; 
; note: doing signed word to integer coercion (cost 20) to I

; compiling (DEFUN MAIN ...)
; file: /home/dunham/gp4/shootout/bench/binarytrees/tmp/binarytrees.sbcl-2.sbcl
; in: DEFUN MAIN
;     (1+ N)
; ==>
;   (+ N 1)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a NUMBER, not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       etc.
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a NUMBER, not a FIXNUM.
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a FIXNUM.
;       etc.
; 
; compilation unit finished
;   printed 37 notes


; /home/dunham/gp4/shootout/bench/binarytrees/tmp/binarytrees.sbcl-2.fasl written
; compilation finished in 0:00:00
[undoing binding stack and other enclosing state... done]
[saving current Lisp image into /home/dunham/gp4/shootout/bench/binarytrees/tmp/sbcl.core:
writing 2976 bytes from the read-only space at 0x01000000
writing 2160 bytes from the static space at 0x01100000
writing 24678400 bytes from the dynamic space at 0x09000000
done]
### START binarytrees.sbcl-2.sbcl_run
(proclaim '(optimize (speed 3) (safety 0) (debug 0) (compilation-speed 0) (space 0)))
(main) (quit)
### END binarytrees.sbcl-2.sbcl_run


=================================================================
COMMAND LINE (%A is single numeric argument):

 /usr/bin/sbcl --noinform --core sbcl.core --userinit /dev/null --sysinit /etc/sbclrc --load binarytrees.sbcl-2.sbcl_run %A
STYLE-WARNING: redefining LISP-VERSION-STRING in DEFUN
STYLE-WARNING: redefining IMPLEMENTATION-SPECIFIC-DIRECTORY-NAME in DEFUN
STYLE-WARNING: redefining PATHNAME-PREFIX-P in DEFUN
STYLE-WARNING: redefining OUTPUT-FILES-FOR-SYSTEM-AND-OPERATION in DEFGENERIC
STYLE-WARNING:
   redefining OUTPUT-FILES-FOR-SYSTEM-AND-OPERATION (#
                                                     #
                                                     #
                                                     #
                                                     #) in DEFMETHOD
STYLE-WARNING: redefining OUTPUT-FILES-USING-MAPPINGS in DEFGENERIC
STYLE-WARNING:
   redefining OUTPUT-FILES-USING-MAPPINGS (#
                                           #
                                           #) in DEFMETHOD
STYLE-WARNING:
   redefining OUTPUT-FILES :AROUND (#
                                    #) in DEFMETHOD
STYLE-WARNING: redefining LISP-VERSION-STRING in DEFUN
STYLE-WARNING: redefining IMPLEMENTATION-SPECIFIC-DIRECTORY-NAME in DEFUN
STYLE-WARNING: redefining PATHNAME-PREFIX-P in DEFUN
STYLE-WARNING: redefining OUTPUT-FILES-FOR-SYSTEM-AND-OPERATION in DEFGENERIC
STYLE-WARNING:
   redefining OUTPUT-FILES-FOR-SYSTEM-AND-OPERATION (#
                                                     #
                                                     #
                                                     #
                                                     #) in DEFMETHOD
STYLE-WARNING: redefining OUTPUT-FILES-USING-MAPPINGS in DEFGENERIC
STYLE-WARNING:
   redefining OUTPUT-FILES-USING-MAPPINGS (#
                                           #
                                           #) in DEFMETHOD
STYLE-WARNING:
   redefining OUTPUT-FILES :AROUND (#
                                    #) in DEFMETHOD
STYLE-WARNING: redefining LISP-VERSION-STRING in DEFUN
STYLE-WARNING: redefining IMPLEMENTATION-SPECIFIC-DIRECTORY-NAME in DEFUN
STYLE-WARNING: redefining PATHNAME-PREFIX-P in DEFUN
STYLE-WARNING: redefining OUTPUT-FILES-FOR-SYSTEM-AND-OPERATION in DEFGENERIC
STYLE-WARNING:
   redefining OUTPUT-FILES-FOR-SYSTEM-AND-OPERATION (#
                                                     #
                                                     #
                                                     #
                                                     #) in DEFMETHOD
STYLE-WARNING: redefining OUTPUT-FILES-USING-MAPPINGS in DEFGENERIC
STYLE-WARNING:
   redefining OUTPUT-FILES-USING-MAPPINGS (#
                                           #
                                           #) in DEFMETHOD
STYLE-WARNING:
   redefining OUTPUT-FILES :AROUND (#
                                    #) in DEFMETHOD
STYLE-WARNING: redefining LISP-VERSION-STRING in DEFUN
STYLE-WARNING: redefining IMPLEMENTATION-SPECIFIC-DIRECTORY-NAME in DEFUN
STYLE-WARNING: redefining PATHNAME-PREFIX-P in DEFUN
STYLE-WARNING: redefining OUTPUT-FILES-FOR-SYSTEM-AND-OPERATION in DEFGENERIC
STYLE-WARNING:
   redefining OUTPUT-FILES-FOR-SYSTEM-AND-OPERATION (#
                                                     #
                                                     #
                                                     #
                                                     #) in DEFMETHOD
STYLE-WARNING: redefining OUTPUT-FILES-USING-MAPPINGS in DEFGENERIC
STYLE-WARNING:
   redefining OUTPUT-FILES-USING-MAPPINGS (#
                                           #
                                           #) in DEFMETHOD
STYLE-WARNING:
   redefining OUTPUT-FILES :AROUND (#
                                    #) in DEFMETHOD
STYLE-WARNING: redefining LISP-VERSION-STRING in DEFUN
STYLE-WARNING: redefining IMPLEMENTATION-SPECIFIC-DIRECTORY-NAME in DEFUN
STYLE-WARNING: redefining PATHNAME-PREFIX-P in DEFUN
STYLE-WARNING: redefining OUTPUT-FILES-FOR-SYSTEM-AND-OPERATION in DEFGENERIC
STYLE-WARNING:
   redefining OUTPUT-FILES-FOR-SYSTEM-AND-OPERATION (#
                                                     #
                                                     #
                                                     #
                                                     #) in DEFMETHOD
STYLE-WARNING: redefining OUTPUT-FILES-USING-MAPPINGS in DEFGENERIC
STYLE-WARNING:
   redefining OUTPUT-FILES-USING-MAPPINGS (#
                                           #
                                           #) in DEFMETHOD
STYLE-WARNING:
   redefining OUTPUT-FILES :AROUND (#
                                    #) in DEFMETHOD
STYLE-WARNING: redefining LISP-VERSION-STRING in DEFUN
STYLE-WARNING: redefining IMPLEMENTATION-SPECIFIC-DIRECTORY-NAME in DEFUN
STYLE-WARNING: redefining PATHNAME-PREFIX-P in DEFUN
STYLE-WARNING: redefining OUTPUT-FILES-FOR-SYSTEM-AND-OPERATION in DEFGENERIC
STYLE-WARNING:
   redefining OUTPUT-FILES-FOR-SYSTEM-AND-OPERATION (#
                                                     #
                                                     #
                                                     #
                                                     #) in DEFMETHOD
STYLE-WARNING: redefining OUTPUT-FILES-USING-MAPPINGS in DEFGENERIC
STYLE-WARNING:
   redefining OUTPUT-FILES-USING-MAPPINGS (#
                                           #
                                           #) in DEFMETHOD
STYLE-WARNING:
   redefining OUTPUT-FILES :AROUND (#
                                    #) in DEFMETHOD
STYLE-WARNING: redefining LISP-VERSION-STRING in DEFUN
STYLE-WARNING: redefining IMPLEMENTATION-SPECIFIC-DIRECTORY-NAME in DEFUN
STYLE-WARNING: redefining PATHNAME-PREFIX-P in DEFUN
STYLE-WARNING: redefining OUTPUT-FILES-FOR-SYSTEM-AND-OPERATION in DEFGENERIC
STYLE-WARNING:
   redefining OUTPUT-FILES-FOR-SYSTEM-AND-OPERATION (#
                                                     #
                                                     #
                                                     #
                                                     #) in DEFMETHOD
STYLE-WARNING: redefining OUTPUT-FILES-USING-MAPPINGS in DEFGENERIC
STYLE-WARNING:
   redefining OUTPUT-FILES-USING-MAPPINGS (#
                                           #
                                           #) in DEFMETHOD
STYLE-WARNING:
   redefining OUTPUT-FILES :AROUND (#
                                    #) in DEFMETHOD
STYLE-WARNING: redefining LISP-VERSION-STRING in DEFUN
STYLE-WARNING: redefining IMPLEMENTATION-SPECIFIC-DIRECTORY-NAME in DEFUN
STYLE-WARNING: redefining PATHNAME-PREFIX-P in DEFUN
STYLE-WARNING: redefining OUTPUT-FILES-FOR-SYSTEM-AND-OPERATION in DEFGENERIC
STYLE-WARNING:
   redefining OUTPUT-FILES-FOR-SYSTEM-AND-OPERATION (#
                                                     #
                                                     #
                                                     #
                                                     #) in DEFMETHOD
STYLE-WARNING: redefining OUTPUT-FILES-USING-MAPPINGS in DEFGENERIC
STYLE-WARNING:
   redefining OUTPUT-FILES-USING-MAPPINGS (#
                                           #
                                           #) in DEFMETHOD
STYLE-WARNING:
   redefining OUTPUT-FILES :AROUND (#
                                    #) in DEFMETHOD
STYLE-WARNING: redefining LISP-VERSION-STRING in DEFUN
STYLE-WARNING: redefining IMPLEMENTATION-SPECIFIC-DIRECTORY-NAME in DEFUN
STYLE-WARNING: redefining PATHNAME-PREFIX-P in DEFUN
STYLE-WARNING: redefining OUTPUT-FILES-FOR-SYSTEM-AND-OPERATION in DEFGENERIC
STYLE-WARNING:
   redefining OUTPUT-FILES-FOR-SYSTEM-AND-OPERATION (#
                                                     #
                                                     #
                                                     #
                                                     #) in DEFMETHOD
STYLE-WARNING: redefining OUTPUT-FILES-USING-MAPPINGS in DEFGENERIC
STYLE-WARNING:
   redefining OUTPUT-FILES-USING-MAPPINGS (#
                                           #
                                           #) in DEFMETHOD
STYLE-WARNING:
   redefining OUTPUT-FILES :AROUND (#
                                    #) in DEFMETHOD


PROGRAM OUTPUT
==============
stretch tree of depth 17	 check: -1
131072	 trees of depth 4	 check: -131072
32768	 trees of depth 6	 check: -32768
8192	 trees of depth 8	 check: -8192
2048	 trees of depth 10	 check: -2048
512	 trees of depth 12	 check: -512
128	 trees of depth 14	 check: -128
32	 trees of depth 16	 check: -32
long lived tree of depth 16	 check: -1

Revised BSD license

  Home   Flawed   Fastest   License   Help