;;; .EnTete "Le-Lisp (c) version 15.2" " " "The Le-Lisp Benchmarks (14-15)" ;;; .EnPied "div.ll" "%" " " ;;; .SuperTitre "The Le-Lisp Benchmarks (14-15)" ;;; ;;; .Centre "*****************************************************************" ;;; .Centre " Ce fichier est en lecture seule hors du projet ALE de l'INRIA. " ;;; .Centre " Il est maintenu par ILOG SA, 2 Avenue Gallie'ni, 94250 Gentilly " ;;; .Centre " (c) Le-Lisp est une marque de'pose'e de l'INRIA " ;;; .Centre "*****************************************************************" ;;; .Centre "$Header: div.ll,v 1.1 88/11/17 09:51:56 chaillou Exp $" ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; File: div.cl ; Description: DIV benchmarks ; Author: Richard Gabriel ; Created: 8-Apr-85 ; Modified: 19-Jul-85 18:28:01 (Bob Shaw); 28-August-88 (P.Kuczynski) ; Language: Le-Lisp ; Package: User ; Status: Ilog ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; (14-15) DIV2 -- Benchmark which divides by 2 using lists of n ()'s. ;;; This file contains a recursive as well as an iterative test. (defun check-div2iter () (check-value '(test-div2iter 1) t)) (defun meter-div2iter () (perform-meter '(test-1 *ll*) 'div2iter)) (defun test-div2iter (n) (if (eq n 1) (test-1 *ll*) (repeat n (test-1 *ll*)))) (defun check-div2rec () (check-value '(test-div2rec 1) t)) (defun meter-div2rec () (perform-meter '(test-2 *ll*) 'div2rec)) (defun test-div2rec (n) (if (eq n 1) (test-2 *ll*) (repeat n (test-2 *ll*)))) ;;; (defun create-n (n) (let ((a ())) (repeat n (setq a (cons () a))) a)) (defvar *ll* (create-n 200)) (defun iterative-div2 (l) (iterative-div2-aux l () )) (defun iterative-div2-aux (l a) (if (null l) a (iterative-div2-aux (cddr l) (cons (car l) a) ))) (defun recursive-div2 (l) (cond ((null l) ()) (t (cons (car l) (recursive-div2 (cddr l)))))) (defun test-1 (l) (repeat 1200 (iterative-div2 l))) (defun test-2 (l) (repeat 1200 (recursive-div2 l))) ;;; for the iterative test call: (test-1 *ll*) ;;; for the recursive test call: (test-2 *ll*) ;(run-benchmark "Div-iter" '(test-1 *ll*)) ;(run-benchmark "Div-rec" '(test-2 *ll*))