diff --git a/Makefile b/Makefile index 6e1ca24..5e104b0 100644 --- a/Makefile +++ b/Makefile @@ -4,13 +4,13 @@ doc: echo Run make all to run all tests csv: all.csv -all.csv: - grep -a -h '+!CSVLINE' results.* | sed 's/+!CSVLINE!+//' > all.csv +all.csv: $(wildcard results.*) + grep -a -h '^+!CSVLINE' results.* | sed 's/+!CSVLINE!+//' > all.csv html: index.html benchmark.html csv index.html: all.csv graph.scm - chez-scheme --script "graph.scm" + chez --script "graph.scm" clean: rm -f results.* all.csv outputs/* @@ -18,4 +18,7 @@ clean: chicken-dependencies: chicken-install r7rs srfi-1 srfi-13 srfi-14 srfi-69 +racket-dependencies: + sudo raco pkg install --scope installation r7rs + include Makefile.schemes diff --git a/Makefile.schemes b/Makefile.schemes index 70eb6b6..35a6be2 100644 --- a/Makefile.schemes +++ b/Makefile.schemes @@ -1,189 +1,180 @@ -all: results.Bigloo results.Bones results.Chez results.Chibi results.Chicken5 results.Chicken5CSI results.Foment results.GambitC results.Gauche results.Guile results.Guile3 results.IronScheme results.Kawa results.Loko results.MIT results.Petite results.Racket results.S7 results.S9fES results.Sagittarius results.Scheme48 results.Ypsilon results.Cyclone results.Femtolisp -# results.Gerbil results.Owl-Lisp -# results.TinyScheme results.Stalin results.SISC results.Rhizome results.Picrin results.Vicare results.RScheme results.Larceny +all: results.Bigloo results.Bones results.Chez results.Chibi results.Chicken results.ChickenCSI results.GambitC results.Gauche results.Guile results.Loko results.MIT results.Petite results.Racket results.S7 results.S9fES results.Cyclone results.Owl-Lisp results.Stalin results.Ypsilon results.Mosh results.Picrin results.TR7 +# results.Foment results.IronScheme results.Sagittarius results.Scheme48 results.Femtolisp results.Kawa results.TinyScheme +# results.Gerbil results.SISC results.Vicare results.RScheme results.Larceny results.Rhizome -s7: +results.TR7: + ./bench tr7 all + +results.S7: ./bench s7 all -sisc: +results.SISC: ./bench sisc all -gerbil: +results.Gerbil: ./bench gerbil all -femtolisp: +results.Femtolisp: ./bench femtolisp all -foment: +results.Foment: ./bench foment all -s9fes: +results.S9fES: ./bench s9fes all -bigloo: +results.Bigloo: ./bench bigloo all -bones: +results.Bones: ./bench bones all -chez: +results.Chez: ./bench chez all -chibi: +results.Chibi: ./bench chibi all -chicken4: - ./bench chicken4 all - -chicken4csi: - ./bench chicken4csi all +results.Chicken: + ./bench chicken all -chicken5: - ./bench chicken5 all +results.ChickenCSI: + ./bench chickencsi all -chicken5csi: - ./bench chicken5csi all - -cyclone: +results.Cyclone: ./bench cyclone all -gambitc: +results.Gambitc: ./bench gambitc all -gauche: +results.Gauche: ./bench gauche all -guile: +results.Guile: ./bench guile all -guile3: - ./bench guile3 all - -ironscheme: +results.Ironscheme: ./bench ironscheme all -kawa: +results.Kawa: ./bench kawa all -larceny: +results.Larceny: ./bench larceny all -loko: +results.Loko: ./bench loko all -mit: +results.MIT: ./bench mit all -owllisp: +results.Mosh: + ./bench mosh all + +results.Owl-Lisp: ./bench owllisp all -petite: +results.Petite: ./bench petite all -picrin: +results.Picrin: ./bench picrin all -racket: +results.Racket: ./bench racket all -rhizome: +results.Rhizome: ./bench rhizome all -rscheme: +results.Rscheme: ./bench rscheme all -sagittarius: +results.Sagittarius: ./bench sagittarius all -stalin: +results.Stalin: ./bench stalin all -scheme48: +results.Scheme48: ./bench scheme48 all -tinyscheme: +results.TinyScheme: ./bench tinyscheme all -tr7: - ./bench tr7 all - -# vicare: +# results.Vicare: # ./bench vicare all -ypsilon: +results.Ypsilon: ./bench ypsilon all -results.Bigloo: bigloo - -results.Bones: bones - -results.Chez: chez +bigloo: results.Bigloo -results.Chibi: chibi +bones: results.Bones -results.Chicken5: chicken5 +chez: results.Chez -results.Chicken5CSI: chicken5csi +chibi: results.Chibi -results.Chicken4: chicken4 +chicken: results.Chicken -results.Chicken4CSI: chicken4csi +chickencsi: results.ChickenCSI -results.Foment: foment +foment: results.Foment -results.GambitC: gambitc +gambitc: results.GambitC -results.Gauche: gauche +gauche: results.Gauche -results.Guile: guile +guile: results.Guile -results.Guile3: guile3 +guile3: results.Guile3 -results.IronScheme: ironscheme +ironscheme: results.IronScheme -results.Kawa: kawa +kawa: results.Kawa -results.Larceny: larceny +larceny: results.Larceny -results.Loko: loko +loko: results.Loko -results.MIT: mit +mit: results.MIT -results.Petite: petite +mosh: results.Mosh -results.Picrin: picrin +petite: results.Petite -results.Racket: racket +picrin: results.Picrin -results.Rhizome: rhizome +racket: results.Racket -results.RScheme: rscheme +rhizome: results.Rhizome -results.S7: s7 +rscheme: results.RScheme -results.S9fES: s9fes +s7: results.S7 -results.Sagittarius: sagittarius +s9fes: results.S9fES -results.Scheme48: scheme48 +sagittarius: results.Sagittarius -results.Stalin: stalin +scheme48: results.Scheme48 -results.TinyScheme: tinyscheme +stalin: results.Stalin -results.TR7: tr7 +tinyscheme: results.TinyScheme -results.Vicare: vicare +vicare: results.Vicare -results.Ypsilon: ypsilon +ypsilon: results.Ypsilon -results.Cyclone: cyclone +cyclone: results.Cyclone -results.Femtolisp: femtolisp +femtolisp: results.Femtolisp -results.Gerbil: gerbil +gerbil: results.Gerbil -results.SISC: sisc +sisc: results.SISC -results.Owl-Lisp: owllisp +owllisp: results.Owl-Lisp +tr7: results.TR7 diff --git a/bench b/bench index fc403a9..60540fa 100755 --- a/bench +++ b/bench @@ -79,7 +79,7 @@ SYNTH_BENCHMARKS="equal bv2string" ALL_BENCHMARKS="$GABRIEL_BENCHMARKS $NUM_BENCHMARKS $KVW_BENCHMARKS $IO_BENCHMARKS $OTHER_BENCHMARKS $GC_BENCHMARKS $SYNTH_BENCHMARKS" -ALL_SYSTEMS="bigloo bones chez chibi chicken5 chicken5csi cyclone femtolisp foment gambitc gauche gerbil guile guile3 ironscheme kawa larceny loko mit owllisp petite picrin racket rhizome rscheme s7 s9fes sagittarius scheme48 stklos tr7 vicare ypsilon" # chicken4 chicken4csi +ALL_SYSTEMS="bigloo bones chez chibi chicken chickencsi cyclone femtolisp foment gambitc gauche gerbil guile ironscheme kawa larceny loko mit owllisp petite picrin racket rhizome rscheme s7 s9fes sagittarius scheme48 stklos tr7 vicare ypsilon" ################################################################ NB_RUNS=1 @@ -108,12 +108,10 @@ setup () BIGLOO=${BIGLOO:-"bigloo"} BONES=${BONES:-"bones"} - CHEZ=${CHEZ:-"chez-scheme"} + CHEZ=${CHEZ:-"chez"} CHIBI=${CHIBI:-"chibi-scheme"} - CHICKEN4_CSC=${CHICKEN4_CSC:-"chicken-csc"} - CHICKEN4_CSI=${CHICKEN4_CSI:-"chicken-csi"} - CHICKEN5_CSC=${CHICKEN5_CSC:-"chicken-csc"} - CHICKEN5_CSI=${CHICKEN5_CSI:-"chicken-csi"} + CHICKEN_CSC=${CHICKEN_CSC:-"chicken-csc"} + CHICKEN_CSI=${CHICKEN_CSI:-"chicken-csi"} CYCLONE=${CYCLONE:-"cyclone"} FEMTOLISP=${FEMTOLISP:-"flisp"} FOMENT=${FOMENT:-"foment"} @@ -122,8 +120,6 @@ setup () GERBIL=${GERBIL:-"gxc"} GUILD=${GUILD:-"guild"} GUILE=${GUILE:-"guile"} - GUILD3=${GUILD3:-"guild3"} - GUILE3=${GUILE3:-"guile3"} HUSKI=${HUSKI:-"huski"} JAVA=${JAVA:-"java"} IRONSCHEME=${IRONSCHEME:-"ironscheme"} @@ -148,7 +144,7 @@ setup () S7=${S7:-"s7"} S9fES=${S9fES:-"s9"} SISC=${SISC:-"sisc"} - STALIN=${STALIN:-"chicken-stalin"} + STALIN=${STALIN:-"stalin"} STKLOS=${STKLOS:-"stklos"} TINYSCHEME=${TINYSCHEME:-"tinyscheme"} TR7I=${TR7I:-"tr7i"} @@ -172,17 +168,14 @@ Usage: bench [-r runs] bones for Bones chez for Chez Scheme chibi for Chibi - chicken4 for Chicken 4 (compiled) - chicken4csi for Chicken 4 (interpreted) - chicken5 for Chicken 5 (compiled) - chicken5csi for Chicken 5(interpreted) + chicken for Chicken (compiled) + chickencsi for Chicken (interpreted) cyclone for Cyclone foment for Foment gambitc for GambitC Scheme gauche for Gauche gerbil for Gerbil Scheme guile for Guile Scheme - guile3 for Guile Scheme 3 husk for Husk ironscheme for IronScheme kawa for Kawa @@ -363,58 +356,31 @@ chibi_exec () time "${CHIBI}" -m scheme.load -e "(load \"$1\")" < "$2" } -# ----------------------------------------------------------------------------- -# Definitions specific to Chicken4 - -chicken4_comp () -{ - OPTS="-M -optimize-leaf-routines -block -inline -inline-global -specialize -O3 -d0" # ecraven added -O3 - ${CHICKEN4_CSC} ${OPTS} $1 -o $2 # ecraven removed -extend r7rs -require-extension r7rs which is very very bad for performance -} - -chicken4_exec () -{ - time "$1" < "$2" -} - # ----------------------------------------------------------------------------- # Definitions specific to Chicken5 -chicken5_comp () +chicken_comp () { OPTS="-R r7rs -X r7rs -block -O3 -C -O3 -d0" - ${CHICKEN5_CSC} ${OPTS} $1 -o $2 + ${CHICKEN_CSC} ${OPTS} $1 -o $2 } -chicken5_exec () +chicken_exec () { time "$1" < "$2" } -# ----------------------------------------------------------------------------- -# Definitions specific to Chicken 4 CSI - -chicken4csi_comp () -{ - : -} - -chicken4csi_exec () -{ - time ${CHICKEN4_CSI} "$1" < "$2" -} - # ----------------------------------------------------------------------------- # Definitions specific to Chicken 5 CSI -chicken5csi_comp () +chickencsi_comp () { : } -chicken5csi_exec () +chickencsi_exec () { - time ${CHICKEN5_CSI} "$1" < "$2" + time ${CHICKEN_CSI} "$1" < "$2" } # ----------------------------------------------------------------------------- @@ -438,9 +404,9 @@ stalin_comp () # run through alexpander first expanded=${1%%scm}exp echo "(print-brackets #f) (alexpander-repl)" | cat - $1 | sponge $1 - chez-scheme -q src/alexpander.scm < $1 > $expanded + chez -q src/alexpander.scm < $1 > $expanded # ${STALIN} -On -Ob -Om -Or -Ot -d -d1 -k -copt -O3 $expanded - echo "(load \"/home/nex/scheme/chez/stalin/stalin.scm\") (load \"/home/nex/scheme/chez/stalin/stalin.scm\") (test \"$expanded\")" | chez-scheme -q + echo "(load \"/home/nex/scheme/chez/stalin/stalin.scm\") (load \"/home/nex/scheme/chez/stalin/stalin.scm\") (test \"$expanded\")" | chez -q } stalin_exec () @@ -521,7 +487,7 @@ tinyscheme_exec () tr7_comp () { - true + : } tr7_exec () @@ -529,6 +495,7 @@ tr7_exec () time ${TR7I} "$1" < "$2" } + # ----------------------------------------------------------------------------- # Definitions specific to RScheme @@ -655,7 +622,7 @@ ironscheme_comp () ironscheme_exec () { # remove import statement - sed -i -e 's/^(import (scheme.*)$//g' $1 + sed -i -e 's/^(import (scheme.*)$/(import (rnrs base) (rnrs io simple))/g' $1 # maybe a support lookup table can be added for these, and only inject if needed, like for read-line, square, exact-integer? too sed -i -e 's/^(define (bitwise-not[[:blank:]].*).*$/#;(excluded/g' $1 sed -i -e 's/^(define (bitwise-and[[:blank:]].*).*$/#;(excluded/g' $1 @@ -742,14 +709,14 @@ mit_exec () } # ----------------------------------------------------------------------------- -# Definitions specific to Guile Scheme +# Definitions specific to Guile Scheme 3 guile_comp () { # Guile's default optimization level is more suited to interactive # development. Explicitly selecting -O3 allows it to more # aggressively inline top-level definitions. - ${GUILD} compile -O3 $1 + ${GUILD} compile -O3 "$1" } guile_exec () @@ -757,19 +724,6 @@ guile_exec () time ${GUILE} "$1" < "$2" } -# ----------------------------------------------------------------------------- -# Definitions specific to Guile Scheme 3 - -guile3_comp () -{ - ${GUILD3} compile $1 -} - -guile3_exec () -{ - time ${GUILE3} "$1" < "$2" -} - # ----------------------------------------------------------------------------- # Definitions specific to Gambit Scheme @@ -830,7 +784,7 @@ gauche_exec () gerbil_comp () { sed -i -e 's/^(run-benchmark)$//' $1 - ${GERBIL} -d $(dirname "$1") -exe -static -O -prelude "(declare (not safe))" -o "${1%.scm}.exe" "$1" + ${GERBIL} -d $(dirname "$1") -exe -O -prelude "(declare (not safe))" -o "${1%.scm}.exe" "$1" } gerbil_exec () @@ -1028,9 +982,9 @@ for system in $systems ; do EXECCOMMANDS="" ;; - chicken5) NAME='Chicken5' - COMP=chicken5_comp - EXEC=chicken5_exec + chicken) NAME='Chicken' + COMP=chicken_comp + EXEC=chicken_exec COMPOPTS="" EXTENSION="scm" EXTENSIONCOMP="exe" @@ -1038,29 +992,9 @@ for system in $systems ; do EXECCOMMANDS="" ;; - chicken5csi) NAME='Chicken5CSI' - COMP=chicken5csi_comp - EXEC=chicken5csi_exec - COMPOPTS="" - EXTENSION="scm" - EXTENSIONCOMP="scm" - COMPCOMMANDS="" - EXECCOMMANDS="" - ;; - - chicken4) NAME='Chicken4' - COMP=chicken4_comp - EXEC=chicken4_exec - COMPOPTS="" - EXTENSION="scm" - EXTENSIONCOMP="exe" - COMPCOMMANDS="" - EXECCOMMANDS="" - ;; - - chicken4csi) NAME='Chicken4CSI' - COMP=chicken4csi_comp - EXEC=chicken4csi_exec + chickencsi) NAME='ChickenCSI' + COMP=chickencsi_comp + EXEC=chickencsi_exec COMPOPTS="" EXTENSION="scm" EXTENSIONCOMP="scm" @@ -1139,14 +1073,14 @@ for system in $systems ; do ;; tr7) NAME='TR7' - COMP=tr7_comp - EXEC=tr7_exec - COMPOPTS="" - EXTENSION="scm" - EXTENSIONCOMP="scm" - COMPCOMMANDS="" - EXECCOMMANDS="" - ;; + COMP=tr7_comp + EXEC=tr7_exec + COMPOPTS="" + EXTENSION="scm" + EXTENSIONCOMP="scm" + COMPCOMMANDS="" + EXECCOMMANDS="" + ;; rscheme) NAME='RScheme' COMP=rscheme_comp @@ -1278,16 +1212,6 @@ for system in $systems ; do EXECCOMMANDS="" ;; - guile3) NAME='Guile3' - COMP=guile3_comp - EXEC=guile3_exec - COMPOPTS="" - EXTENSION="scm" - EXTENSIONCOMP="scm" - COMPCOMMANDS="" - EXECCOMMANDS="" - ;; - mit) NAME='MIT' COMP=mit_comp EXEC=mit_exec diff --git a/src/Chicken-prelude.scm b/src/Chicken-prelude.scm index 7b93663..1dae31b 100644 --- a/src/Chicken-prelude.scm +++ b/src/Chicken-prelude.scm @@ -1,36 +1,2 @@ -(import chicken scheme srfi-4 lolevel) -(use (rename extras (write-string %write-string))) ;; for read-line, write-string -(use vector-lib) ;; for vector-map -(define flush-output-port flush-output) -(define-syntax import - (syntax-rules () - ((import stuff ...) - (begin) ;; do nothing - ))) -(define current-jiffy current-milliseconds) -(define (jiffies-per-second) 1000) -(define current-second current-seconds) -(define inexact exact->inexact) -(define exact inexact->exact) -(define (square x) (* x x)) -(define exact-integer? integer?) - -;; tail -(define (write-string string #!optional out) - (%write-string string #f out)) - -;; bv2string -(define make-bytevector make-u8vector) -(define bytevector-u8-set! u8vector-set!) - -(define (string->utf8 string) - (let ((u8vector (make-u8vector (string-length string)))) - (move-memory! string u8vector) - u8vector)) - -(define (utf8->string u8vector) - (let ((string (make-string (u8vector-length u8vector)))) - (move-memory! u8vector string) - string)) - -(define (this-scheme-implementation-name) (string-append "chicken-" (chicken-version))) +(import (only (chicken platform) chicken-version)) +(define (this-scheme-implementation-name) (string-append "chicken5-" (chicken-version))) diff --git a/src/Chicken5-prelude.scm b/src/Chicken5-prelude.scm deleted file mode 100644 index 1dae31b..0000000 --- a/src/Chicken5-prelude.scm +++ /dev/null @@ -1,2 +0,0 @@ -(import (only (chicken platform) chicken-version)) -(define (this-scheme-implementation-name) (string-append "chicken5-" (chicken-version))) diff --git a/src/Chicken5CSI-prelude.scm b/src/Chicken5CSI-prelude.scm deleted file mode 100644 index f2fc7d7..0000000 --- a/src/Chicken5CSI-prelude.scm +++ /dev/null @@ -1,2 +0,0 @@ -(import (only (chicken platform) chicken-version)) -(define (this-scheme-implementation-name) (string-append "chicken5csi-" (chicken-version))) diff --git a/src/ChickenCSI-prelude.scm b/src/ChickenCSI-prelude.scm index 052e4f2..f2fc7d7 100644 --- a/src/ChickenCSI-prelude.scm +++ b/src/ChickenCSI-prelude.scm @@ -1,33 +1,2 @@ -(use extras) ;; for read-line -(use vector-lib) ;; for vector-map -(define flush-output-port flush-output) -(define-syntax import - (syntax-rules () - ((import stuff ...) - (begin) ;; do nothing - ))) -(define current-jiffy current-milliseconds) -(define (jiffies-per-second) 1000) -(define current-second current-seconds) -(define inexact exact->inexact) -(define exact inexact->exact) -(define (square x) (* x x)) -(define exact-integer? integer?) - -;; bv2string -(use srfi-4 lolevel) - -(define make-bytevector make-u8vector) -(define bytevector-u8-set! u8vector-set!) - -(define (string->utf8 string) - (let ((u8vector (make-u8vector (string-length string)))) - (move-memory! string u8vector) - u8vector)) - -(define (utf8->string u8vector) - (let ((string (make-string (u8vector-length u8vector)))) - (move-memory! u8vector string) - string)) - -(define (this-scheme-implementation-name) (string-append "chickencsi-" (chicken-version))) +(import (only (chicken platform) chicken-version)) +(define (this-scheme-implementation-name) (string-append "chicken5csi-" (chicken-version)))