diff --git a/cl-bench.asd b/cl-bench.asd index c56c04319d7c37f4e4d360b99e32eb65e6571844..e99982f1b2405de0d0b025fbeab5ced18874dc22 100644 --- a/cl-bench.asd +++ b/cl-bench.asd @@ -5,7 +5,7 @@ :author "Eric Marsden" :maintainer "Daniel 'jackdaniel' KochmaƄski" :license "Public Domain" - :depends-on (#:trivial-garbage) + :depends-on (#:alexandria #:trivial-garbage) :serial t :components ((:file "package") (:file "cl-bench") diff --git a/package.lisp b/package.lisp index 21d9fe27ef96dbb5341c295bc0c3b3f47e9f976c..cdb0cf9a620edd1805e8bf4d8b21593fce59f344 100644 --- a/package.lisp +++ b/package.lisp @@ -2,5 +2,7 @@ (defpackage #:cl-bench (:use #:cl) - (:export #:bench-run + (:import-from #:alexandria #:ensure-list) + (:export #:bench-run-1 + #:bench-run #:defbench)) diff --git a/support.lisp b/support.lisp index 2e2adb89fd50f22f65c620f9465beedb1aa56e8d..250098c44daa86132617aff62a54b8a11eaa289c 100644 --- a/support.lisp +++ b/support.lisp @@ -96,6 +96,18 @@ (progn ,@body) (bench-report-footer)))) +(setf (fdefinition 'filter) #'remove-if-not) + +(defun bench-run-1 (&key names groups + &aux + (names (ensure-list names)) + (groups (ensure-list groups))) + (let ((*benchmarks* (union + (filter (lambda (%) (member % names)) *benchmarks* :key #'benchmark-name) + (filter (lambda (%) (member % groups)) *benchmarks* :key #'benchmark-group)))) + (when *benchmarks* + (print *benchmarks*) + (bench-run)))) (defun bench-run () (with-open-file (f (benchmark-report-file)