;; this file: ;; https://dataswamp.org/~incal/cl/bench/bubble.cl ;; ;; original Elisp source: ;; elisp-benchmarks (load "~/public_html/cl/bench/timing.cl") (let*((bubble-len 1000) (bubble-lst (mapcar #'random (make-list bubble-len :initial-element most-positive-fixnum) ))) (defun bubble (lst) (declare (optimize speed (safety 0) (debug 0))) (let ((i (length lst))) (loop while (< 1 i) do (let ((b lst)) (loop while (cdr b) do (when (< (cadr b) (car b)) (rplaca b (prog1 (cadr b) (rplacd b (cons (car b) (cddr b))) ))) (setq b (cdr b)))) (decf i) ) lst) ) (defun bubble-entry () (loop repeat 100 for l = (copy-list bubble-lst) do (bubble l) )) ) (timing (bubble-entry))