(defun fresh-vector (s) (etypecase s (list (coerce s 'vector)) (vector (copy-seq s)))) (defun foo (s) (declare (optimize speed (debug 1) (safety 1))) (map 'vector 'identity s)) (defun bar (s) (declare (optimize speed (debug 1) (safety 1))) (fresh-vector s)) (defparameter *s* (alexandria:iota 10)) (time (loop :repeat 40000000 :do (foo *s*))) ;; Evaluation took: ;; 5.539 seconds of real time ;; 5.537333 seconds of total run time (5.536821 user, 0.000512 system) ;; [ Run times consist of 0.008 seconds GC time, and 5.530 seconds non-GC time. ] ;; 99.96% CPU ;; 18,795,470,572 processor cycles ;; 5,119,999,824 bytes consed (time (loop :repeat 40000000 :do (bar *s*))) ;; Evaluation took: ;; 4.089 seconds of real time ;; 4.087682 seconds of total run time (4.075785 user, 0.011897 system) ;; [ Run times consist of 0.004 seconds GC time, and 4.084 seconds non-GC time. ] ;; 99.98% CPU ;; 13,877,019,964 processor cycles ;; 3,839,998,288 bytes consed