Skip to content

Relative Compile Performance of clasp

Karsten Poeck edited this page Feb 13, 2022 · 13 revisions

Compiler performance tests (not speed of compiled code)

In the following table one can find compiler performance of clasp for some tasks compared with ecl, sbcl and clozurecl

Date Version asdf cl-jpeg ironclad clx babel cl-unicode flexi-streams opticl mcclim total
2002-02-13 1195e54d7 93.95 42.60 523.68 597.14 92.49 295.30 121.14 193.13 763.79 2723.22
2002-02-13 ECL 21.2.1 26.42 108.71 339.59 183.74 18.90 104.89 59.60 127.55 311.71 1281.11
2002-02-13 SBCL 2.2.1 3.16 1.04 40.58 8.84 2.11 2.70 3.08 11.12 21.02 93.65
2002-02-13 ccl 1.12.dev 3.49 0.78 17.99 6.60 1.59 4.27 2.19 8.33 21.39 66.64

Note that e.g. :mcclim depends on :clx and :cl-jpeg, so that order of timings is important

Commands used (fresh start after each compile in this order):

  • (time (compile-file "source-dir:src;lisp;modules;asdf;build;asdf.lisp"))
  • (time (ql:quickload :cl-jpeg))
  • (time (ql:quickload :ironclad))
  • (time (ql:quickload :clx))
  • (time (ql:quickload :babel))
  • (time (ql:quickload :cl-unicode))
  • (time (ql:quickload :flexi-streams))
  • (time (ql:quickload :opticl))
  • (time (ql:quickload :mcclim))

Cl-Bench tests (speed of compiled code (apart from test compiler)

To reproduce:

Benchmarked on: x86_64 Darwin Kernel Version 18.7.0: Tue Nov 10 00:07:31 PST 2020; root:xnu-4903.278.51~1/RELEASE_X86_64 karsten-poecks-macbook-pro.local

Benchmark Best Clozure Common Lisp Version 1.12 (v1.12-dev.3-125-g595a5cf4) DarwinX8664 ECL 20.4.24-develop SBCL 2.0.11 clasp cclasp-boehm-0.4.2-3458-ga7a2855e3-cst clasp cclasp-boehm-0.4.2-3593a-gcf622f75c-cst clasp cclasp-boehm-0.4.2-3630-ge045444b6-cst-a
Date 20201121T0942 20201230T0742 20201227T0956 20201129T1008 20201227T1609 20210119T2209
COMPILER 0,76 0,82 1,54 0,76 18,14 15,43 14,11
LOAD-FASL 0,07 0,11 0,14 0,07 2,59 2,36 2,55
SUM-PERMUTATIONS 0,21 1,51 2,12 0,21 2,59 2,51 3,10
WALK-LIST/SEQ 0,01 0,01 0,01 0,01 0,02 0,02 0,02
WALK-LIST/MESS 0,02 0,02 0,35 0,02
BOYER 0,19 0,83 0,63 0,19 1,03 0,96 1,00
BROWSE 0,11 0,30 0,26 0,11 0,75 0,49 0,49
DDERIV 0,11 0,24 0,59 0,11 2,00 1,82 1,86
DERIV 0,12 0,25 0,61 0,12 2,20 2,02 2,07
DESTRUCTIVE 0,10 0,24 0,41 0,10 0,63 0,61 0,61
DIV2-TEST-1 0,18 0,38 0,75 0,18 2,10 2,07 2,07
DIV2-TEST-2 0,25 0,51 1,05 0,25 2,44 2,51 2,40
FFT 0,02 0,06 1,53 0,02 0,72 0,69 0,72
FRPOLY/FIXNUM 0,14 0,33 1,20 0,14 0,83 0,80 0,82
FRPOLY/BIGNUM 0,13 0,51 0,41 0,13 0,69 0,68 0,76
FRPOLY/FLOAT 0,25 0,57 1,28 0,25 0,88 0,83 0,84
PUZZLE 0,16 0,42 2,63 0,16 3,60 3,85 3,50
TAK 0,09 0,09 0,93 0,14 0,97 1,13 0,93
CTAK 0,21 0,32 1,43 0,21
TRTAK 0,07 0,07 0,89 0,14 0,98 0,92 0,93
TAKL 0,25 0,25 0,70 0,35 0,61 0,51 0,42
STAK 0,17 0,51 1,47 0,17
FPRINT/UGLY 0,38 1,97 0,90 0,38 3,25 2,85 2,90
FPRINT/PRETTY 0,61 2,03 10,15 0,61 21,52 21,17 19,73
TRAVERSE 0,59 0,76 2,04 0,59 3,04 2,86 2,70
TRIANGLE 0,42 0,56 1,77 0,42 3,93 3,45 3,70
RICHARDS 0,37 0,87 4,06 0,37 5,37 5,03 5,21
FACTORIAL 0,07 0,12 0,13 0,07 0,39 0,40 0,41
FIB 0,04 0,04 1,84 0,11 0,47 0,48 0,45
FIB-RATIO 0,02 0,03 0,05 0,02 0,08 0,07 0,07
ACKERMANN 0,64 0,64 4,25 2,12 7,57 7,68 7,13
MANDELBROT/COMPLEX 0,15 0,27 0,22 0,15 2,43 2,49 2,53
MANDELBROT/DFLOAT 0,00 0,03 0,81 0,00 2,26 2,39 2,11
MRG32K3A 0,39 4,11 1,30 0,39 8,16 8,87 7,76
CRC40 0,28 1,20 8,61 0,28 5,12 5,49 5,18
BIGNUM/ELEM-100-1000 0,03 0,56 0,03 0,03 0,04 0,03 0,04
BIGNUM/ELEM-1000-100 0,02 3,33 0,02 0,05 0,03 0,02 0,02
BIGNUM/ELEM-10000-1 0,02 3,52 0,02 0,03 0,02 0,02 0,02
BIGNUM/PARI-100-10 0,00 0,34 0,00 0,01 0,00 0,00 0,00
BIGNUM/PARI-200-5 0,01 9,56 0,01 0,02 0,01 0,01 0,01
PI-DECIMAL/SMALL 0,28 1,23 1,18 0,28 0,98 1,02 0,96
PI-DECIMAL/BIG 0,13 1,40 0,79 0,13 0,65 0,73 0,67
PI-ATAN 0,27 1,33 0,27 0,45 0,48 0,62 0,51
PI-RATIOS 0,40 3,68 0,40 0,60
HASH-STRINGS 0,10 2,64 0,44 0,10 0,42 0,48 0,43
HASH-INTEGERS 0,12 1,25 0,57 0,12 0,36 0,37 0,33
SLURP-LINES 1,00 10,83 8,00 1,00 10,34 11,11 10,64
BOEHM-GC 0,56 4,95 3,89 0,56 18,00 16,97 16,93
DEFLATE-FILE 0,08 0,16 1,59 0,08 0,96 0,87 0,87
1D-ARRAYS 0,02 0,02 0,22 0,02 0,21 0,19 0,19
2D-ARRAYS 0,20 0,66 4,53 0,20 5,45 5,38 5,45
3D-ARRAYS 0,47 1,43 9,11 0,47 11,02 11,39 11,69
BITVECTORS 0,14 0,27 1,95 0,18 0,15 0,14 0,15
BENCH-STRINGS 0,28 0,79 2,72 0,97 0,29 0,33 0,28
fill-strings/adjustable 1,90 11,97 1,95 1,90 9,34 9,56 8,99
STRING-CONCAT 15,25 17,88 26,15 15,25 45,00 44,44 41,09
SEARCH-SEQUENCE 0,48 1,22 2,08 0,48 5,50 6,11 5,70
CLOS/defclass 0,17 0,18 0,25 0,17 2,00 2,03 1,78
CLOS/defmethod 0,10 0,10 0,26 0,92 4,15 3,72 3,27
CLOS/instantiate 0,36 2,09 5,00 0,36 4,23 4,12 3,92
CLOS/simple-instantiate 0,05 3,69 13,64 0,05 1,80 1,51 1,93
CLOS/methodcalls 1,50 1,50 2,12 2,70 2,89 2,90 3,12
CLOS/method+after 0,53 0,94 1,65 0,53 12,95 4,20 3,83
CLOS/complex-methods 0,41 0,54 0,78 0,41 0,98 1,05 0,94
EQL-SPECIALIZED-FIB 0,07 0,36 2,08 0,07 43,42 0,42 0,42
Clone this wiki locally