source: trunk/abcl/src/org/armedbear/lisp/run-benchmarks.lisp @ 14207

Last change on this file since 14207 was 11297, checked in by ehuelsmann, 13 years ago

Set Id keyword for expansion.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 8.2 KB
Line 
1;; Driver for Eric Marsden's CL-BENCH Lisp performance benchmarks.
2
3(in-package :cl-user)
4
5#+armedbear
6(require 'pprint)
7
8#+allegro
9(progn
10  (setq excl:*record-source-file-info* nil)
11  (setq excl:*load-source-file-info* nil)
12  (setq excl:*record-xref-info* nil)
13  (setq excl:*load-xref-info* nil))
14
15(setf *default-pathname-defaults* #p"/home/peter/cl-bench/")
16
17(load #p"defpackage.lisp")
18(compile-file #p"files/arrays.olisp")
19(compile-file #p"files/bignum.olisp")
20(compile-file #p"files/boehm-gc.olisp")
21(compile-file #p"files/clos.olisp")
22(compile-file #p"files/crc40.olisp")
23(compile-file #p"files/deflate.olisp")
24(compile-file #p"files/gabriel.olisp")
25(compile-file #p"files/hash.olisp")
26(compile-file #p"files/math.olisp")
27(compile-file #p"files/ratios.olisp")
28(compile-file #p"files/richards.olisp")
29(compile-file #p"files/misc.olisp")
30
31(load (compile-file-pathname #p"files/arrays.olisp"))
32(load (compile-file-pathname #p"files/bignum.olisp"))
33(load (compile-file-pathname #p"files/boehm-gc.olisp"))
34(load (compile-file-pathname #p"files/clos.olisp"))
35(load (compile-file-pathname #p"files/crc40.olisp"))
36(load (compile-file-pathname #p"files/deflate.olisp"))
37(load (compile-file-pathname #p"files/gabriel.olisp"))
38(load (compile-file-pathname #p"files/hash.olisp"))
39(load (compile-file-pathname #p"files/math.olisp"))
40(load (compile-file-pathname #p"files/ratios.olisp"))
41(load (compile-file-pathname #p"files/richards.olisp"))
42(load (compile-file-pathname #p"files/misc.olisp"))
43(compile-file #p"support.lisp")
44(load (compile-file-pathname #p"support.lisp"))
45
46(in-package :cl-bench)
47
48(export '(run-benchmark run-benchmarks))
49
50(setf *benchmark-output* t)
51
52#+(or armedbear clisp)
53(defun bench-gc ()
54  (ext:gc))
55
56#+sbcl
57(defun bench-gc ()
58  (sb-ext:gc #+gencgc :full #+gencgc t))
59
60#+allegro
61(defun bench-gc ()
62  (excl:gc))
63
64(defun report-filename ()
65  (let ((impl ""))
66    #+allegro   (setf impl "-allegro")
67    #+armedbear (setf impl "-armedbear")
68    #+clisp     (setf impl "-clisp")
69    #+sbcl      (setf impl "-sbcl")
70    (multiple-value-bind (sec min hour day month year)
71      (get-decoded-time)
72      (format nil "~abenchmark-~d~2,'0d~2,'0dT~2,'0d~2,'0d~a"
73              #+win32 "" #-win32 "/var/tmp/"
74              year month day hour min impl))))
75
76(defun run-benchmark (function &optional args (times 1))
77  (let ((name (symbol-name function)))
78    (format t "Running benchmark ~A" (symbol-name function))
79    (when (> times 1)
80      (format t " (~D runs)" times))
81    (terpri)
82    (force-output)
83    (let (before-real after-real before-user after-user)
84      (setf before-real (get-internal-real-time))
85      (setf before-user (get-internal-run-time))
86      (dotimes (i times)
87        (apply function args))
88      (setf after-user (get-internal-run-time))
89      (setf after-real (get-internal-real-time))
90      (let ((real (/ (- after-real before-real) internal-time-units-per-second))
91            (user (/ (- after-user before-user) internal-time-units-per-second)))
92        (format *benchmark-output*
93                ";; ~25a ~8,2f ~8,2f~%"
94                name real user)
95        (format *trace-output*
96                ";; ~25a ~8,2f ~8,2f~%"
97                name real user))
98      (force-output *benchmark-output*)))
99  (bench-gc)
100  (values))
101
102(defun run-benchmarks ()
103  (with-open-file (f (report-filename)
104                     :direction :output
105                     :if-exists :supersede)
106    (let ((*benchmark-output* f))
107      (format *benchmark-output* "~A ~A "
108              (lisp-implementation-type) (lisp-implementation-version))
109      (multiple-value-bind (second minute hour date month year)
110        (get-decoded-time)
111        (format *benchmark-output* "~d-~2,'0d-~2,'0d ~2,'0d:~2,'0d~%"
112                year month date hour minute))
113      (format *benchmark-output* "~a~%" (short-site-name))
114      (force-output *benchmark-output*)
115      (bench-gc)
116      ;; The benchmarks.
117      #+nil
118      (run-benchmark 'cl-bench.misc:run-compiler nil 3)
119      #+nil
120      (run-benchmark 'cl-bench.misc:run-fasload nil 20)
121      #-allegro
122      (run-benchmark 'cl-bench.misc:run-permutations nil 2)
123      #+nil
124      (progn
125        (cl-bench.misc::setup-walk-list/seq)
126        (run-benchmark 'cl-bench.misc:walk-list/seq)
127        (setf cl-bench.misc::*big-seq-list* nil)
128        (bench-gc))
129      #+nil
130      (progn
131        (cl-bench.misc::setup-walk-list/mess)
132        (run-benchmark 'cl-bench.misc:walk-list/mess)
133        (setf cl-bench.misc::*big-mess-list* nil)
134        (bench-gc))
135      (run-benchmark 'cl-bench.gabriel:boyer nil 30)
136      (run-benchmark 'cl-bench.gabriel:browse nil 10)
137      (run-benchmark 'cl-bench.gabriel:dderiv-run nil 50)
138      (run-benchmark 'cl-bench.gabriel:deriv-run nil 60)
139      (run-benchmark 'cl-bench.gabriel:run-destructive nil 100)
140      (run-benchmark 'cl-bench.gabriel:run-div2-test1 nil 200)
141      (run-benchmark 'cl-bench.gabriel:run-div2-test2 nil 200)
142      (run-benchmark 'cl-bench.gabriel:run-fft nil 30)
143      (run-benchmark 'cl-bench.gabriel:run-frpoly/fixnum nil 100)
144      (run-benchmark 'cl-bench.gabriel:run-frpoly/bignum nil 30)
145      (run-benchmark 'cl-bench.gabriel:run-frpoly/float nil 100)
146      (run-benchmark 'cl-bench.gabriel:run-puzzle nil 1500)
147      (run-benchmark 'cl-bench.gabriel:run-tak)
148      (run-benchmark 'cl-bench.gabriel:run-ctak)
149      (run-benchmark 'cl-bench.gabriel:run-trtak)
150      (run-benchmark 'cl-bench.gabriel:run-takl)
151      #+nil
152      (run-benchmark 'cl-bench.gabriel:run-stak)
153      (run-benchmark 'cl-bench.gabriel:fprint/ugly nil 200)
154      (run-benchmark 'cl-bench.gabriel:fprint/pretty)
155      (run-benchmark 'cl-bench.gabriel:run-traverse)
156      (run-benchmark 'cl-bench.gabriel:run-triangle)
157      (run-benchmark 'cl-bench.richards:richards)
158      (run-benchmark 'cl-bench.math:run-factorial nil 1000)
159      (run-benchmark 'cl-bench.math:run-fib nil 50)
160      (run-benchmark 'cl-bench.math:run-fib-ratio)
161      #+nil
162      (run-benchmark 'cl-bench.math:run-ackermann)
163      (run-benchmark 'cl-bench.math:run-mandelbrot/complex)
164      (run-benchmark 'cl-bench.math:run-mandelbrot/dfloat)
165      (run-benchmark 'cl-bench.math:run-mrg32k3a)
166      (run-benchmark 'cl-bench.crc:run-crc40)
167      (run-benchmark 'cl-bench.bignum:run-elem-100-1000)
168      (run-benchmark 'cl-bench.bignum:run-elem-1000-100)
169      (run-benchmark 'cl-bench.bignum:run-elem-10000-1)
170      (run-benchmark 'cl-bench.bignum:run-pari-100-10)
171      (run-benchmark 'cl-bench.bignum:run-pari-200-5)
172      (run-benchmark 'cl-bench.bignum:run-pi-decimal/small)
173      #-allegro
174      (run-benchmark 'cl-bench.bignum:run-pi-decimal/big)
175      (run-benchmark 'cl-bench.bignum:run-pi-atan)
176      (run-benchmark 'cl-bench.ratios:run-pi-ratios)
177      #-clisp
178      (run-benchmark 'cl-bench.hash:run-slurp-lines nil 30)
179      #-allegro
180      (run-benchmark 'cl-bench.hash:hash-strings nil 2)
181      (run-benchmark 'cl-bench.hash:hash-integers nil 10)
182      #-allegro
183      (run-benchmark 'cl-bench.boehm-gc:gc-benchmark)
184      (run-benchmark 'cl-bench.deflate:run-deflate-file nil 100)
185      #-allegro
186      (run-benchmark 'cl-bench.arrays:bench-1d-arrays)
187      #-allegro
188      (run-benchmark 'cl-bench.arrays:bench-2d-arrays '(1000 1))
189      #-allegro
190      (run-benchmark 'cl-bench.arrays:bench-3d-arrays '(100 1))
191      (run-benchmark 'cl-bench.arrays:bench-bitvectors nil 3)
192      #-allegro
193      (run-benchmark 'cl-bench.arrays:bench-strings)
194      #-allegro
195      (run-benchmark 'cl-bench.arrays:bench-strings/adjustable '(1000000 1))
196      #-(or allegro clisp)
197      (run-benchmark 'cl-bench.arrays:bench-string-concat '(1000000 1))
198      #-allegro
199      (run-benchmark 'cl-bench.arrays:bench-search-sequence '(1000000 1))
200      (return-from run-benchmarks)
201      (run-benchmark 'cl-bench.clos:run-defclass)
202      (run-benchmark 'cl-bench.clos:run-defmethod)
203      (run-benchmark 'cl-bench.clos:make-instances)
204      (run-benchmark 'cl-bench.clos:make-instances/simple)
205      (run-benchmark 'cl-bench.clos:methodcalls/simple)
206      (run-benchmark 'cl-bench.clos:methodcalls/simple+after)
207      #-clisp
208      (run-benchmark 'cl-bench.clos:methodcalls/complex)
209      #+nil
210      (run-benchmark 'cl-bench.clos:run-eql-fib)
211      (run-benchmark 'cl-bench.clos::eql-fib '(16)))))
212
213(in-package "CL-USER")
214
215(import '(cl-bench:run-benchmark cl-bench:run-benchmarks))
216
217(export '(run-benchmark run-benchmarks))
Note: See TracBrowser for help on using the repository browser.