Skip to content

Relative Compile Performance of clasp

Karsten Poeck edited this page Aug 24, 2020 · 13 revisions

Quicklisp performance tests

In the following table one can find relative performance of clasp for some tasks:

Timings for version cclasp-boehm-0.4.2-2692-g00d68d383-cston macosx 10.14.6 (mojave) CLASP_BUILD_MODE = 'faso' USE_COMPILE_FILE_PARALLEL=True

Compile Task (real)  clasp(s) ecl(s) sbcl(s) factor clasp/sbcl factor clasp/ecl factor ecl/sbcl
cl-bench gabriel 35.0 6,170 0.711 49.23 5.67 8.68
asdf 123.399 20.145 5.872 21.01 6.13 3.43
cl-jpeg 119.012 128.09 1.531 77.73 0.93 83.62
ironclad 5355.203 400.671 53.792 99.55 13.37 7.45
clx 1241.959 187.031 14.933 83.17 6.61 12.52
mcclim 4366.509 error in cl-unicode 66.045 66.11 missing missing

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

Commands used (in the same session 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 :mcclim))

Cl-Bench tests

To reproduce:

  • Sources in https://gitlab.common-lisp.net/kpoeck/cl-bench.git, branch feature-clasp-clbench
  • Execute (load "load-cl-bench.lisp")
  • Remember that tests are done with default optimisation settings!
    • NOGC Don't garbage collect bignums in boehm
    • P = (setq cmp:*compile-file-parallel* t)
    • S = (setq cmp:*compile-file-parallel* nil)
    • ET = (setq CLASP-CLEAVIR::*ELIMINATE-TYPEQ* t)
    • NT = (setq CLASP-CLEAVIR::*ELIMINATE-TYPEQ* nil)

Benchmarked on: x86_64 Darwin Kernel Version 18.7.0: Thu Jun 18 20:50:10 PDT 2020; root:xnu-4903.278.43~1/RELEASE_X86_64 karsten-poecks-macbook-pro.local

Benchmark Best ECL 20.4.24 clasp cclasp-boehm-0.4.2-2942-gdaa485cdb-cst-NOGC-P-ET clasp cclasp-boehm-0.4.2-2942-gdaa485cdb-cst-NOGC-P-NT clasp cclasp-boehm-0.4.2-2942-gdaa485cdb-cst-NOGC-S-ET clasp cclasp-boehm-0.4.2-2942-gdaa485cdb-cst-NOGC-S-NT clasp cclasp-boehm-0.4.2-2942-gdaa485cdb-cst-P-ET clasp cclasp-boehm-0.4.2-2942-gdaa485cdb-cst-P-NT clasp cclasp-boehm-0.4.2-2942-gdaa485cdb-cst-S-ET clasp cclasp-boehm-0.4.2-2942-gdaa485cdb-cst-S-NT clasp cclasp-mps-0.4.2-2942-gdaa485cdb-cst-P-ET clasp cclasp-mps-0.4.2-2942-gdaa485cdb-cst-P-NT clasp cclasp-mps-0.4.2-2942-gdaa485cdb-cst-S-ET clasp cclasp-mps-0.4.2-2942-gdaa485cdb-cst-S-NT
Date 20200823T1735 20200823T2328 20200824T1943 20200823T2346 20200823T2356 20200823T1440 20200823T1454 20200823T1512 20200823T1528 20200823T1554 20200823T1611 20200823T1702 20200823T1720
COMPILER 1,38 1,38 36,17 30,72 67,65 59,29 32,79 30,95 71,40 69,22 95,83 74,00 125,84 88,65
LOAD-FASL 0,13 0,13 2,17 2,23 0,71 0,71 2,25 2,34 0,85 0,80 3,15 3,54 1,00 0,91
SUM-PERMUTATIONS 1,13 2,03 1,85 2,04 1,57 1,95 1,13 2,16 1,67 2,08 5,96 6,15 5,61 5,00
WALK-LIST/SEQ 0,01 0,01 0,02 0,02 0,02 0,02 0,02 0,01 0,02 0,02 0,01 0,01 0,01 0,01
WALK-LIST/MESS 0,33 0,33
BOYER 0,61 0,61 0,68 0,83 0,64 0,89 0,63 0,84 0,61 0,86 1,92 1,83 1,83 2,21
BROWSE 0,23 0,23 0,43 0,43 0,45 0,67 0,44 0,44 0,47 0,68 1,69 1,59 1,58 1,43
DDERIV 0,57 0,57 1,68 1,74 1,42 1,79 1,31 1,55 1,61 1,82 5,13 5,12 4,73 4,13
DERIV 0,59 0,59 1,79 1,87 1,59 1,92 1,44 2,04 1,80 1,93 5,52 5,64 5,30 4,78
DESTRUCTIVE 0,33 0,39 0,38 0,34 0,35 0,36 0,34 0,34 0,33 0,37 1,36 1,36 1,34 1,30
DIV2-TEST-1 0,75 0,75 1,93 2,05 1,65 2,23 1,59 1,94 1,52 2,18 7,12 7,08 6,89 6,74
DIV2-TEST-2 1,12 1,12 2,01 2,16 1,82 2,46 1,74 2,21 1,57 2,43 7,24 7,76 6,71 6,95
FFT 0,45 1,46 0,50 0,53 0,47 0,50 0,46 0,53 0,45 0,52 0,47 0,52 0,51 0,52
FRPOLY/FIXNUM 0,59 1,20 0,62 0,66 0,59 0,61 0,65 0,65 0,60 0,67 1,58 1,59 1,52 1,64
FRPOLY/BIGNUM 0,46 0,46 0,83 0,80 0,76 1,00 57,21 56,03 53,63 54,43 3,57 3,77 3,71 3,28
FRPOLY/FLOAT 0,59 1,26 0,62 0,67 0,59 0,59 0,71 0,75 0,68 0,66 1,60 1,59 1,53 1,53
PUZZLE 2,61 2,61 3,57 3,32 3,25 3,20 3,33 3,42 2,93 2,77 3,31 3,43 3,40 3,07
TAK 0,51 0,87 0,54 0,54 0,54 0,55 0,51 0,58 0,55 0,56 0,52 0,62 0,53 0,54
CTAK 1,28 1,28
TRTAK 0,50 0,95 0,55 0,54 0,52 0,54 0,50 0,59 0,52 0,60 0,51 0,56 0,53 0,59
TAKL 0,45 0,69 0,50 0,45 0,48 0,53 0,47 0,51 0,48 0,48 0,48 0,51 0,49 0,53
STAK 1,43 1,43 2,18 2,15 2,07 2,04 2,06 2,41 2,34 2,07 2,19 2,42 1,99 1,87
FPRINT/UGLY 0,92 0,92 2,71 2,67 2,65 2,64 2,61 2,74 2,66 2,59 3,22 3,17 2,89 3,68
FPRINT/PRETTY 9,37 9,37 19,12 17,66 17,56 17,54 18,34 17,78 17,50 17,33 18,88 20,47 19,68 20,27
TRAVERSE 1,64 1,76 1,94 1,74 1,72 1,84 1,73 1,94 1,76 1,64 1,73 1,79 1,90 1,95
TRIANGLE 1,54 1,54 1,78 1,81 1,70 1,77 1,61 1,70 1,68 1,85 1,57 1,71 1,74 1,77
RICHARDS 3,49 3,49 4,17 3,91 3,78 3,87 3,86 4,22 4,12 4,32 3,84 4,40 4,06 3,99
FACTORIAL 0,14 0,14 0,40 0,39 0,38 0,39 17,57 18,07 16,29 15,83 1,16 1,36 1,22 1,32
FIB 0,08 1,64 0,09 0,08 0,09 0,09 0,10 0,09 0,09 0,09 0,09 0,08 0,09 0,09
FIB-RATIO 0,05 0,05 0,36 0,36 0,34 0,35 8,19 7,89 7,51 7,18 0,67 0,70 0,66 0,71
ACKERMANN 3,18 3,77 3,57 3,28 3,49 3,52 3,18 3,34 3,52 3,42 3,23 3,43 3,44 3,37
MANDELBROT/COMPLEX 0,22 0,22 2,14 2,35 2,09 2,65 1,72 2,22 1,73 2,80 10,20 11,06 10,00 8,71
MANDELBROT/DFLOAT 0,82 0,82 1,54 1,84 1,63 2,21 1,29 1,63 1,16 2,45 8,36 9,11 7,97 7,83
MRG32K3A 1,28 1,28 5,83 6,65 5,76 7,82 4,25 6,05 4,64 9,05 27,69 29,93 27,63 25,71
CRC40 2,80 8,42 3,18 3,01 3,00 3,13 2,93 2,93 3,26 3,41 2,80 3,34 3,13 3,14
BIGNUM/ELEM-100-1000 0,03 0,03 0,10 0,10 0,10 0,10 4,67 4,25 4,08 4,20 0,16 0,17 0,17 0,16
BIGNUM/ELEM-1000-100 0,02 0,02 0,03 0,03 0,03 0,03 0,49 0,49 0,43 0,44 0,03 0,04 0,04 0,04
BIGNUM/ELEM-10000-1 0,02 0,02 0,02 0,02 0,02 0,02 0,02 0,02 0,02 0,02 0,02 0,02 0,02 0,02
BIGNUM/PARI-100-10 0,00 0,00 0,01 0,01 0,01 0,01 0,48 0,47 0,40 0,44 0,02 0,02 0,02 0,02
BIGNUM/PARI-200-5 0,01 0,01 0,02 0,02 0,02 0,02 0,48 0,45 0,42 0,43 0,03 0,03 0,03 0,04
PI-DECIMAL/SMALL 1,07 1,07 1,78 1,64 1,67 1,73 19,98 20,43 19,61 19,97 3,08 3,27 3,39 2,80
PI-DECIMAL/BIG 0,73 0,73 0,87 0,78 0,82 0,83 2,80 2,76 2,68 2,54 0,82 0,86 0,91 0,95
PI-ATAN 0,23 0,23 0,79 0,73 0,74 0,97 33,12 32,09 31,75 30,92 2,85 2,98 3,06 3,11
PI-RATIOS 0,34 0,34 0,96 0,85 0,89 0,90 23,12 21,83 23,44 21,93 2,47 2,58 2,55 2,70
HASH-STRINGS 0,33 0,40 0,37 0,33 0,34 0,33 0,39 0,38 0,39 0,38 0,50 0,52 0,59 1,14
HASH-INTEGERS 0,29 0,49 0,33 0,29 0,31 0,31 0,29 0,29 0,29 0,31 0,45 0,48 0,47 0,48
SLURP-LINES 7,11 7,11 9,50 8,67 9,36 9,48 8,19 8,50 8,89 9,71 18,68 18,86 18,92 18,45
BOEHM-GC 4,02 4,02 15,04 14,87 13,74 14,41 12,52 16,48 13,59 15,35 64,27 69,55 65,46 60,44
DEFLATE-FILE 0,55 1,37 0,66 0,57 0,55 0,57 0,61 0,57 0,69 0,62 0,57 0,67 0,60 0,68
1D-ARRAYS 0,06 0,16 0,07 0,06 0,06 0,06 0,07 0,06 0,08 0,07 0,06 0,07 0,07 0,06
2D-ARRAYS 4,12 4,12 7,12 6,68 9,65 7,17 8,25 9,54 9,48 7,21 5,90 8,61 8,01 5,73
3D-ARRAYS 8,46 8,46 19,20 17,92 17,99 14,30 15,00 19,31 17,68 21,40 11,92 17,04 13,42 16,13
BITVECTORS 0,14 1,85 0,43 0,39 0,16 0,14 0,14 0,34 0,17 0,15 2,04 2,60 2,03 1,90
BENCH-STRINGS 0,28 2,57 0,32 0,30 0,29 0,29 0,28 0,28 0,37 0,30 0,31 0,35 0,33 0,33
fill-strings/adjustable 1,93 1,93 7,35 7,08 6,85 6,12 6,76 6,48 8,39 5,96 15,00 12,69 13,18 11,91
STRING-CONCAT 23,51 23,51 31,43 29,89 27,73 27,62 33,33 28,48 36,19 29,80 68,44 145,73 95,29 67,28
SEARCH-SEQUENCE 1,50 1,50 4,63 4,40 3,98 3,97 3,79 5,03 4,28 3,75 14,20 33,85 12,39 13,32
CLOS/defclass 0,23 0,23 3,73 3,38 3,34 3,05 3,47 2,88 3,69 2,93 7,38 13,56 7,32 6,35
CLOS/defmethod 0,22 0,22 7,12 6,45 6,31 5,86 6,91 5,83 6,68 5,83 13,46 27,66 15,18 12,06
CLOS/instantiate 2,96 4,79 3,35 3,01 3,14 3,12 3,14 3,00 3,32 2,96 5,26 12,87 5,45 6,69
CLOS/simple-instantiate 0,77 13,75 1,44 1,48 1,26 1,38 0,77 1,44 1,35 1,10 6,20 15,14 6,41 6,83
CLOS/methodcalls 2,08 2,08 5,45 4,83 4,80 5,04 208,85 215,97 225,81 226,86 20,69 48,92 22,40 21,60
CLOS/method+after 1,58 1,58 15,07 13,21 13,86 13,50 94,11 109,89 128,82 96,84 27,98 63,33 27,64 24,74
CLOS/complex-methods 0,73 0,76 0,85 0,82 0,78 0,79 0,73 1,07 1,98 0,95 0,81 1,73 0,83 0,87
EQL-SPECIALIZED-FIB 2,02 2,02 33,37 34,14 30,70 31,34 33,05 41,01 39,68 38,70 100,73 167,30 92,48 100,65
Clone this wiki locally