2007-01-20 14:32:30 -05:00
|
|
|
#! /usr/bin/env bash
|
|
|
|
#!/bin/bash
|
|
|
|
# was #!/arch/gnu/bin/bash
|
|
|
|
# was #! /bin/sh
|
|
|
|
# but /bin/sh didn't recognize the -nt operator
|
|
|
|
|
|
|
|
# "bench", a shell script to benchmark Scheme implementations
|
|
|
|
#
|
|
|
|
# Please report any errors or extensions to the author:
|
|
|
|
#
|
|
|
|
# Marc Feeley (feeley@iro.umontreal.ca)
|
|
|
|
#
|
|
|
|
# The following have contributed to this benchmark suite:
|
|
|
|
#
|
|
|
|
# Harvey Stein (abel@netvision.net.il)
|
|
|
|
|
|
|
|
# This script has been modified by Will Clinger (will@ccs.neu.edu).
|
|
|
|
#
|
|
|
|
# The benchmarks must be contained within a src subdirectory
|
|
|
|
# of the directory in which this script is run.
|
|
|
|
#
|
|
|
|
# FIXME: The tested systems live in different places on our
|
|
|
|
# machines. This should be cleaned up so a one-line change
|
|
|
|
# will take care of it.
|
|
|
|
|
|
|
|
OSNAME="`( uname )`"
|
|
|
|
|
|
|
|
# The following definitions are not in use, but using them
|
|
|
|
# might improve the script.
|
|
|
|
|
|
|
|
HOME="`( pwd )`"
|
|
|
|
SRC="${HOME}/src"
|
|
|
|
PREFIX="${HOME}/prefix"
|
|
|
|
SUFFIX="${HOME}/suffix"
|
|
|
|
|
|
|
|
TEMP="/tmp/larcenous"
|
|
|
|
|
|
|
|
# On our Solaris machines, we can't install systems in
|
|
|
|
# /usr/local, and some are in random places for historical
|
|
|
|
# reasons.
|
|
|
|
|
|
|
|
setup ()
|
|
|
|
{
|
|
|
|
case ${OSNAME} in
|
|
|
|
|
|
|
|
"SunOS")
|
|
|
|
|
|
|
|
APPS="/proj/will/Apps"
|
|
|
|
|
|
|
|
CHICKEN="${APPS}/Chicken/bin/csc"
|
|
|
|
CHICKEN_INT="${APPS}/Chicken/bin/csi"
|
|
|
|
GSC="${APPS}/bin/gsc"
|
|
|
|
GSI="${APPS}/bin/gsi"
|
|
|
|
TWOBIT="/proj/will/LarcenyDev/twobit"
|
|
|
|
SCHEME48="${APPS}/Scheme48/scheme48-1.3/go"
|
|
|
|
MIT="${APPS}/bin/mitscheme"
|
|
|
|
LARCENY=${LARCENY:-"larceny"}
|
|
|
|
;;
|
|
|
|
|
|
|
|
"Linux")
|
|
|
|
|
|
|
|
APPS="/usr/local"
|
|
|
|
|
|
|
|
CHICKEN="${APPS}/bin/chicken-csc"
|
|
|
|
CHICKEN_INT="${APPS}/bin/chicken-csi"
|
|
|
|
GSC="${APPS}/bin/gambit-gsc"
|
|
|
|
GSI="${APPS}/bin/gambit-gsi"
|
|
|
|
TWOBIT="${APPS}/bin/twobit"
|
|
|
|
SCHEME48="${APPS}/bin/scheme48"
|
|
|
|
MIT="${APPS}/bin/mit-scheme"
|
|
|
|
PETITE_CHEZ="${APPS}/bin/petite-chez"
|
|
|
|
HENCHMAN="/home/henchman/bin/larceny"
|
|
|
|
LARCENY=${LARCENY:-"larceny"}
|
|
|
|
;;
|
|
|
|
|
|
|
|
"Darwin")
|
|
|
|
APPS="/opt/bin"
|
|
|
|
LARCENY="/Users/aghuloum/.opt/larceny-0.93-bin-native-ia32-macosx/larceny"
|
|
|
|
PETITE_CHEZ="/usr/bin/petite"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
# For both Solaris and Linux machines.
|
|
|
|
|
|
|
|
BIGLOO=${BIGLOO:-"${APPS}/bin/bigloo"}
|
|
|
|
MZSCHEME=${MZSCHEME:-"mzscheme"}
|
|
|
|
|
|
|
|
CSC=$CHICKEN
|
|
|
|
CSI=$CHICKEN_INT
|
|
|
|
}
|
|
|
|
|
|
|
|
setup
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
error ()
|
|
|
|
{
|
|
|
|
echo $1
|
|
|
|
echo '
|
|
|
|
Usage: bench [-r runs] [-c clean] [-i iterfile] [-s setting] [-o options] <scheme-systems> <benchmarks>
|
|
|
|
|
|
|
|
<scheme-systems> is the abbreviated name of one or more
|
|
|
|
language implementations to use, i.e.:
|
|
|
|
|
|
|
|
gambit for Gambit-C compiler.
|
|
|
|
gambit-int for Gambit-C interpreter.
|
|
|
|
bigloo for Bigloo compiler.
|
|
|
|
bigloo-int for Bigloo interpreter.
|
|
|
|
chicken for Chicken compiler.
|
|
|
|
chicken-int for Chicken interpreter.
|
|
|
|
mzscheme for MzScheme.
|
|
|
|
scheme48 for Scheme48.
|
|
|
|
larceny for Larceny.
|
|
|
|
awk for AWK.
|
|
|
|
cc for '"cc"' C compiler.
|
|
|
|
gcc for '"gcc"' C compiler.
|
|
|
|
java for Java.
|
|
|
|
all for all of the above.
|
|
|
|
all-interpreters for the above interpreters.
|
|
|
|
all-compilers for the above compilers.
|
|
|
|
|
|
|
|
<benchmarks> is the name of one or more benchmarks
|
|
|
|
to use, i.e.:
|
|
|
|
|
|
|
|
all for all the benchmarks
|
|
|
|
fib for the fib benchmark
|
|
|
|
"fib boyer" for fib & boyer.
|
|
|
|
|
|
|
|
runs is the number of times to run each benchmark (default is 1).
|
|
|
|
|
|
|
|
clean is whether or not to clean out the build directory.
|
|
|
|
true = clean. Useful for testing or inspection.
|
|
|
|
|
|
|
|
iterfile is the file which specifies the number of iterations in
|
|
|
|
each benchmark. If not supplied, we use num-iters.scm for compilers
|
|
|
|
and num-iters-int.scm for interpreters. For testing, you might
|
|
|
|
want to use one-iter.scm, which runs each test once.
|
|
|
|
|
|
|
|
setting is the benchmarking setting. The possible values are:
|
|
|
|
|
|
|
|
r5rs (default):
|
|
|
|
- generic arithmetic operations
|
|
|
|
- optional overflow detection on fixnum arithmetic
|
|
|
|
- mutable bindings for the definitions in the benchmark
|
|
|
|
- mutable predefined bindings (for +, car, ...)
|
|
|
|
|
|
|
|
r6rs:
|
|
|
|
- generic arithmetic operations
|
|
|
|
- overflow detection on fixnum arithmetic (either produce a
|
|
|
|
bignum or signal an exception)
|
|
|
|
- immutable bindings for the definitions in the benchmark
|
|
|
|
- immutable predefined bindings (for +, car, ...)
|
|
|
|
- safe execution (i.e. an exception must be signalled on errors)
|
|
|
|
|
|
|
|
r6rs-unsafe:
|
|
|
|
- like r6rs setting but errors are not checked, but
|
|
|
|
fixnum arithmetic overflows are detected
|
|
|
|
|
|
|
|
r6rs-fixflo:
|
|
|
|
- arithmetic operations are specialized to fixnum or flonum
|
|
|
|
arguments as appropriate and the fixnum operations may
|
|
|
|
wrap on overflow
|
|
|
|
- immutable bindings for the definitions in the benchmark
|
|
|
|
- immutable predefined bindings (for +, car, ...)
|
|
|
|
- safe execution (i.e. an exception must be signalled on errors)
|
|
|
|
|
|
|
|
r6rs-fixflo-unsafe:
|
|
|
|
- like r6rs-fixflo setting but errors are not checked'
|
|
|
|
|
|
|
|
exit
|
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
cleanup ()
|
|
|
|
{
|
|
|
|
if [ "$clean" = "true" ] ; then
|
|
|
|
# It's true that technically speaking, we should be in the build
|
|
|
|
# directory when this fcn is called. Thus, we should be able to
|
|
|
|
# just do rm *. However, that's kind of dangerous, so instead,
|
|
|
|
# we delete files newer than the mark file that evaluate () makes.
|
|
|
|
|
|
|
|
for x in * ; do
|
|
|
|
if [ $x -nt clean_newer_than_me ] ; then
|
|
|
|
rm $x
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
rm clean_newer_than_me
|
|
|
|
}
|
|
|
|
|
|
|
|
evaluate ()
|
|
|
|
{
|
|
|
|
echo > clean_newer_than_me
|
|
|
|
sleep 1
|
|
|
|
{
|
|
|
|
echo
|
|
|
|
echo Testing $1 under ${NAME}-${setting}
|
|
|
|
echo Compiling...
|
|
|
|
make_src_code $1
|
|
|
|
$COMP $1
|
|
|
|
i=0
|
|
|
|
while [ "$i" -lt "$NB_RUNS" ]
|
|
|
|
do
|
|
|
|
echo Running...
|
|
|
|
$EXEC $1
|
|
|
|
i=`expr $i + 1`
|
|
|
|
done
|
|
|
|
cleanup
|
|
|
|
} 2>&1 | tee -a ../../results.${NAME}-${setting}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
make_src_code ()
|
|
|
|
{
|
|
|
|
case "$extension" in
|
|
|
|
".awk")
|
|
|
|
cat ../../src/$1.awk > $1.awk
|
|
|
|
chmod +x $1.awk ;;
|
|
|
|
".c")
|
|
|
|
cat ../../src/$1.c > $1.c ;;
|
|
|
|
".java")
|
|
|
|
cat ../../src/$1.java > $1.java ;;
|
|
|
|
".scm")
|
|
|
|
printf "$PREFIXCODE\n" "$1" "$1" > $1-prefix.scm
|
|
|
|
printf "$SUFFIXCODE\n" "$1" "$1" > $1-suffix.scm
|
|
|
|
cat $1-prefix.scm ../../prefix/prefix-${system}.scm | sed "s/;INSERTCODE/$INSERTCODE/" | cat - ../../num-iters/${iterfile} ../../src/$1.scm ../../suffix/suffix-${system}.scm $1-suffix.scm > $1.scm ;;
|
|
|
|
".ss")
|
|
|
|
printf "$PREFIXCODE\n" "$1" "$1" > $1-prefix.scm
|
|
|
|
printf "$SUFFIXCODE\n" "$1" "$1" > $1-suffix.scm
|
|
|
|
cat ../../prefix/prefix-${system}.scm | sed "s/;INSERTCODE/$INSERTCODE/" | cat - ../../num-iters/${iterfile} ../../src/$1.scm ../../suffix/suffix-${system}.scm > $1-body.ss
|
|
|
|
cat $1-prefix.scm $1-suffix.scm > $1.ss ;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# For handling setting that does not exist for a given compiler
|
|
|
|
|
|
|
|
nonexistent_comp ()
|
|
|
|
{
|
|
|
|
:
|
|
|
|
}
|
|
|
|
|
|
|
|
nonexistent_exec ()
|
|
|
|
{
|
|
|
|
:
|
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Definitions specific to Gambit-C compiler
|
|
|
|
|
|
|
|
gambit_comp ()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
echo $GSC $COMPOPTS $1.scm
|
|
|
|
} | /usr/bin/time sh
|
|
|
|
}
|
|
|
|
|
|
|
|
gambit_exec ()
|
|
|
|
{
|
|
|
|
if test -f ./$1.o1
|
|
|
|
then $GSI -:m10000,d- ./$1.o1
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
gambit_int_comp ()
|
|
|
|
{
|
|
|
|
:
|
|
|
|
}
|
|
|
|
|
|
|
|
gambit_int_exec ()
|
|
|
|
{
|
|
|
|
printf "$REPLCOMMANDS" "$1" | $GSI -:m10000,d-
|
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Definitions specific to bigloo compiler
|
|
|
|
|
|
|
|
bigloo_comp ()
|
|
|
|
{
|
|
|
|
case $1 in
|
|
|
|
ctak|dynamic|fibc|maze|puzzle|scheme) usecc="-call/cc" ;;
|
|
|
|
*) usecc="" ;;
|
|
|
|
esac
|
|
|
|
/usr/bin/time $BIGLOO $usecc $COMPOPTS $1.scm -o $1
|
|
|
|
}
|
|
|
|
|
|
|
|
bigloo_exec ()
|
|
|
|
{
|
|
|
|
if test -f ./$1
|
|
|
|
then ./$1
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
bigloo_int_comp ()
|
|
|
|
{
|
|
|
|
:
|
|
|
|
}
|
|
|
|
|
|
|
|
bigloo_int_exec ()
|
|
|
|
{
|
|
|
|
printf "$REPLCOMMANDS" "$1" | /usr/bin/time $BIGLOO -heapsize 10
|
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Definitions specific to Chicken compiler
|
|
|
|
|
|
|
|
chicken_comp ()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
echo $CSC $COMPOPTS $1.scm
|
|
|
|
} | /usr/bin/time sh
|
|
|
|
}
|
|
|
|
|
|
|
|
chicken_exec ()
|
|
|
|
{
|
|
|
|
if test -f ./$1
|
|
|
|
then ./$1 -:hi10M -:hs0
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
chicken_int_comp ()
|
|
|
|
{
|
|
|
|
:
|
|
|
|
}
|
|
|
|
|
|
|
|
chicken_int_exec ()
|
|
|
|
{
|
|
|
|
printf "$REPLCOMMANDS" "$1" | /usr/bin/time $CSI -:hi10M -:hs0
|
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Definitions specific to MzScheme
|
|
|
|
|
|
|
|
mzscheme_comp ()
|
|
|
|
{
|
|
|
|
:
|
|
|
|
}
|
|
|
|
|
|
|
|
mzscheme_exec ()
|
|
|
|
{
|
|
|
|
printf "$REPLCOMMANDS" "$1" | mzscheme $COMPOPTS
|
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Definitions specific to Scheme48
|
|
|
|
|
|
|
|
scheme48_comp ()
|
|
|
|
{
|
|
|
|
:
|
|
|
|
}
|
|
|
|
|
|
|
|
scheme48_exec ()
|
|
|
|
{
|
|
|
|
printf "$REPLCOMMANDS" "$1" | $SCHEME48 $COMPOPTS
|
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Definitions specific to Larceny
|
|
|
|
|
|
|
|
larceny_comp ()
|
|
|
|
{
|
|
|
|
printf "$COMPCOMMANDS" "$1" | ${LARCENY} $COMPOPTS
|
|
|
|
:
|
|
|
|
}
|
|
|
|
|
|
|
|
larceny_exec ()
|
|
|
|
{
|
|
|
|
printf "$EXECCOMMANDS" "$1" | ${LARCENY} $COMPOPTS
|
|
|
|
}
|
|
|
|
|
|
|
|
henchman_comp ()
|
|
|
|
{
|
|
|
|
:
|
|
|
|
}
|
|
|
|
|
|
|
|
henchman_exec ()
|
|
|
|
{
|
|
|
|
printf "$REPLCOMMANDS" "$1" | $HENCHMAN $COMPOPTS
|
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
2007-01-20 19:26:17 -05:00
|
|
|
# Definitions specific to Ikarus Scheme
|
2007-01-20 14:32:30 -05:00
|
|
|
|
|
|
|
ikarus_comp ()
|
|
|
|
{
|
|
|
|
:
|
|
|
|
}
|
|
|
|
|
|
|
|
ikarus_exec ()
|
|
|
|
{
|
|
|
|
printf "$REPLCOMMANDS" "$1" | ikarus
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Definitions specific to Chez Scheme
|
|
|
|
|
|
|
|
chez_comp ()
|
|
|
|
{
|
|
|
|
:
|
|
|
|
}
|
|
|
|
|
|
|
|
chez_exec ()
|
|
|
|
{
|
|
|
|
printf "$REPLCOMMANDS" "$1" | scheme
|
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Definitions specific to Petite Chez
|
|
|
|
|
|
|
|
petite_chez_comp ()
|
|
|
|
{
|
|
|
|
:
|
|
|
|
}
|
|
|
|
|
|
|
|
petite_chez_exec ()
|
|
|
|
{
|
|
|
|
printf "$REPLCOMMANDS" "$1" | /usr/bin/time $PETITE_CHEZ
|
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Definitions specific to MIT Scheme
|
|
|
|
|
|
|
|
mit_comp ()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
echo "(compile-file \"$1.scm\")" | /usr/bin/time ${MIT} ${COMPOPTS}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
mit_exec ()
|
|
|
|
{
|
|
|
|
printf "$REPLCOMMANDS" "$1" | $MIT -heap 7000
|
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Definitions specific to stalin
|
|
|
|
|
|
|
|
stalin_comp ()
|
|
|
|
{
|
|
|
|
mv $1.scm $1.sc
|
|
|
|
/usr/bin/time stalin -copt -O2 -Ob -Om -On -Or -Ot -s $1
|
|
|
|
}
|
|
|
|
|
|
|
|
stalin_exec ()
|
|
|
|
{
|
|
|
|
if test -f ./$1
|
|
|
|
then /usr/bin/time ./$1
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Definitions specific to scm
|
|
|
|
|
|
|
|
scm_comp ()
|
|
|
|
{
|
|
|
|
:
|
|
|
|
}
|
|
|
|
|
|
|
|
scm_exec ()
|
|
|
|
{
|
|
|
|
printf "$REPLCOMMANDS" "$1" | /usr/bin/time scm -f
|
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Definitions specific to STk
|
|
|
|
|
|
|
|
stk_comp ()
|
|
|
|
{
|
|
|
|
:
|
|
|
|
}
|
|
|
|
|
|
|
|
stk_exec ()
|
|
|
|
{
|
|
|
|
### Need to send output to /dev/null so that it doesn't hang when there's
|
|
|
|
### an error...
|
|
|
|
printf "$REPLCOMMANDS" "$1" | /usr/bin/time snow -f < /dev/null
|
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Definitions specific to AWK
|
|
|
|
|
|
|
|
awk_comp ()
|
|
|
|
{
|
|
|
|
:
|
|
|
|
}
|
|
|
|
|
|
|
|
awk_exec ()
|
|
|
|
{
|
|
|
|
/usr/bin/time ./$1.awk
|
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Definitions specific to CC
|
|
|
|
|
|
|
|
cc_comp ()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
echo cc -O -o $1 $1.c -lm -lpthread
|
|
|
|
} | /usr/bin/time sh
|
|
|
|
ls -l $1
|
|
|
|
}
|
|
|
|
|
|
|
|
cc_exec ()
|
|
|
|
{
|
|
|
|
if test -f ./$1
|
|
|
|
then /usr/bin/time ./$1
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Definitions specific to GCC
|
|
|
|
|
|
|
|
gcc_comp ()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
echo gcc -O3 -o $1 $1.c -lm -lpthread
|
|
|
|
} | /usr/bin/time sh
|
|
|
|
ls -l $1
|
|
|
|
}
|
|
|
|
|
|
|
|
gcc_exec ()
|
|
|
|
{
|
|
|
|
if test -f ./$1
|
|
|
|
then /usr/bin/time ./$1
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Definitions specific to Java
|
|
|
|
|
|
|
|
java_comp ()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
echo javac $1.java
|
|
|
|
} | /usr/bin/time sh
|
|
|
|
ls -l $1.class
|
|
|
|
}
|
|
|
|
|
|
|
|
java_exec ()
|
|
|
|
{
|
|
|
|
/usr/bin/time java $1
|
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
GABRIEL_BENCHMARKS="boyer browse cpstak ctak dderiv deriv destruc diviter divrec puzzle takl triangl" # fft tak trav1 trav2
|
|
|
|
|
|
|
|
KVW_BENCHMARKS="ack array1 cat string sum1 sumloop tail wc"
|
|
|
|
|
|
|
|
#C_BENCHMARKS="fft fib fibfp mbrot nucleic pnpoly sum sumfp tak tfib $KVW_BENCHMARKS"
|
|
|
|
C_BENCHMARKS="fft fib fibfp mbrot pnpoly sum sumfp tak $KVW_BENCHMARKS"
|
|
|
|
|
|
|
|
#OTHER_BENCHMARKS="conform dynamic earley fibc graphs lattice matrix maze mazefun nqueens paraffins peval pi primes ray scheme simplex slatex"
|
2007-02-10 11:49:38 -05:00
|
|
|
OTHER_BENCHMARKS="conform dynamic earley fibc graphs lattice matrix maze mazefun nqueens paraffins peval primes ray scheme simplex slatex perm9 nboyer sboyer gcbench symbtesting"
|
2007-01-20 14:32:30 -05:00
|
|
|
|
|
|
|
NEW_BENCHMARKS="parsing gcold"
|
|
|
|
|
|
|
|
AWK_BENCHMARKS="$KVW_BENCHMARKS"
|
|
|
|
|
|
|
|
JAVA_BENCHMARKS="tfib"
|
|
|
|
|
|
|
|
#ALL_BENCHMARKS="succeed fail crash $GABRIEL_BENCHMARKS $C_BENCHMARKS $OTHER_BENCHMARKS"
|
|
|
|
ALL_BENCHMARKS="$GABRIEL_BENCHMARKS $C_BENCHMARKS $OTHER_BENCHMARKS $NEW_BENCHMARKS"
|
|
|
|
|
|
|
|
ALL_INTERPRETERS='bigloo-int petite-chez gambit-int chicken-int scm stk'
|
|
|
|
ALL_COMPILERS='gambit bigloo chicken mzscheme scheme48 larceny'
|
|
|
|
ALL_GAMBIT='gambit gambit-int'
|
|
|
|
ALL_NON_SCHEME='awk cc gcc java'
|
|
|
|
ALL_SYSTEMS="$ALL_COMPILERS $ALL_INTERPRETERS $ALL_NON_SCHEME"
|
|
|
|
|
|
|
|
## Arg processing...
|
|
|
|
if [ "$#" -lt 2 ]; then
|
|
|
|
error '>>> At least two command line arguments are needed'
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
cmdline="$0"
|
|
|
|
flagsdone=0
|
|
|
|
|
|
|
|
NB_RUNS=1
|
|
|
|
clean=true
|
|
|
|
setting=r5rs
|
|
|
|
options=""
|
|
|
|
|
|
|
|
while [ $# -gt 2 ] ; do
|
|
|
|
arg="$1"
|
|
|
|
shift
|
|
|
|
case $arg in
|
|
|
|
-r) NB_RUNS=$1 ; shift ;;
|
|
|
|
-c) clean=$1 ; shift ;;
|
|
|
|
-i) forceiters=$1 ; shift ;;
|
|
|
|
-s) setting=$1 ; shift ;;
|
|
|
|
-o) options=$1 ; shift ;;
|
|
|
|
*) error ">>> Unknown argument of $arg given." ;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
|
|
|
if [ "$#" -ne 2 ]; then
|
|
|
|
error '>>> Last two arguments must be <systems> and <benchmarks>'
|
|
|
|
fi
|
|
|
|
|
|
|
|
case "$1" in
|
|
|
|
all) systems="$ALL_SYSTEMS" ;;
|
|
|
|
all-interpreters) systems="$ALL_INTERPRETERS" ;;
|
|
|
|
all-compilers) systems="$ALL_COMPILERS" ;;
|
|
|
|
all-gambit) systems="$ALL_GAMBIT" ;;
|
|
|
|
*) systems="$1" ;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
case "$2" in
|
|
|
|
all) benchmarks="$ALL_BENCHMARKS" ;;
|
|
|
|
gabriel) benchmarks="$GABRIEL_BENCHMARKS" ;;
|
|
|
|
kvw) benchmarks="$KVW_BENCHMARKS" ;;
|
|
|
|
other) benchmarks="$OTHER_BENCHMARKS" ;;
|
|
|
|
awk) benchmarks="$AWK_BENCHMARKS" ;;
|
|
|
|
c) benchmarks="$C_BENCHMARKS" ;;
|
|
|
|
java) benchmarks="$JAVA_BENCHMARKS" ;;
|
|
|
|
*) benchmarks="$2" ;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
## Run each benchmark under each system...
|
|
|
|
for system in $systems ; do
|
|
|
|
|
|
|
|
case "$system" in
|
|
|
|
|
|
|
|
gambit) NAME='Gambit-C'
|
|
|
|
COMP=gambit_comp
|
|
|
|
EXEC=gambit_exec
|
|
|
|
iterfile=num-iters.scm
|
|
|
|
extension=".scm"
|
|
|
|
case "$setting" in
|
|
|
|
mostly-fixflo)
|
|
|
|
COMPOPTS="-dynamic -cc-options '$options'"
|
|
|
|
INSERTCODE="(declare (mostly-fixnum-flonum))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
mostly-flofix)
|
|
|
|
COMPOPTS="-dynamic -cc-options '$options'"
|
|
|
|
INSERTCODE="(declare (mostly-flonum-fixnum))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
mostly-fix)
|
|
|
|
COMPOPTS="-dynamic -cc-options '$options'"
|
|
|
|
INSERTCODE="(declare (mostly-fixnum))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
mostly-flo)
|
|
|
|
COMPOPTS="-dynamic -cc-options '$options'"
|
|
|
|
INSERTCODE="(declare (mostly-flonum))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
mostly-generic)
|
|
|
|
COMPOPTS="-dynamic -cc-options '$options'"
|
|
|
|
INSERTCODE="(declare (mostly-generic))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
sb-mostly-fixflo)
|
|
|
|
COMPOPTS="-dynamic -cc-options '$options'"
|
|
|
|
INSERTCODE="(declare (standard-bindings) (mostly-fixnum-flonum))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
sb-mostly-flofix)
|
|
|
|
COMPOPTS="-dynamic -cc-options '$options'"
|
|
|
|
INSERTCODE="(declare (standard-bindings) (mostly-flonum-fixnum))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
sb-mostly-fix)
|
|
|
|
COMPOPTS="-dynamic -cc-options '$options'"
|
|
|
|
INSERTCODE="(declare (standard-bindings) (mostly-fixnum))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
sb-mostly-flo)
|
|
|
|
COMPOPTS="-dynamic -cc-options '$options'"
|
|
|
|
INSERTCODE="(declare (standard-bindings) (mostly-flonum))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
sb-mostly-generic)
|
|
|
|
COMPOPTS="-dynamic -cc-options '$options'"
|
|
|
|
INSERTCODE="(declare (standard-bindings) (mostly-generic))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
r5rs)
|
|
|
|
COMPOPTS="-dynamic -cc-options '$options'"
|
|
|
|
INSERTCODE="(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
r6rs)
|
|
|
|
COMPOPTS="-dynamic -cc-options '$options'"
|
|
|
|
INSERTCODE="(declare (standard-bindings) (extended-bindings) (block))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
r6rs-unsafe)
|
|
|
|
COMPOPTS="-dynamic -cc-options '$options'"
|
|
|
|
INSERTCODE="(declare (standard-bindings) (extended-bindings) (block) (not safe))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
r6rs-fixflo)
|
|
|
|
COMPOPTS="-dynamic -cc-options '$options'"
|
|
|
|
INSERTCODE="(declare (standard-bindings) (extended-bindings) (block))(define-macro (if-fixflo yes no) yes)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
r6rs-fixflo-unsafe)
|
|
|
|
COMPOPTS="-dynamic -cc-options '$options'"
|
|
|
|
INSERTCODE="(declare (standard-bindings) (extended-bindings) (block) (not safe))(define-macro (if-fixflo yes no) yes)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
|
|
|
|
gambit-sp) NAME='Gambit-C-sp'
|
|
|
|
COMP=gambit_comp
|
|
|
|
EXEC=gambit_exec
|
|
|
|
iterfile=num-iters.scm
|
|
|
|
extension=".scm"
|
|
|
|
case "$setting" in
|
|
|
|
mostly-fixflo)
|
|
|
|
COMPOPTS="-dynamic -cc-options -D___OPTIMIZE_SPACE"
|
|
|
|
INSERTCODE="(declare (mostly-fixnum-flonum))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
mostly-flofix)
|
|
|
|
COMPOPTS="-dynamic -cc-options -D___OPTIMIZE_SPACE"
|
|
|
|
INSERTCODE="(declare (mostly-flonum-fixnum))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
mostly-fix)
|
|
|
|
COMPOPTS="-dynamic -cc-options -D___OPTIMIZE_SPACE"
|
|
|
|
INSERTCODE="(declare (mostly-fixnum))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
mostly-flo)
|
|
|
|
COMPOPTS="-dynamic -cc-options -D___OPTIMIZE_SPACE"
|
|
|
|
INSERTCODE="(declare (mostly-flonum))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
mostly-generic)
|
|
|
|
COMPOPTS="-dynamic -cc-options -D___OPTIMIZE_SPACE"
|
|
|
|
INSERTCODE="(declare (mostly-generic))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
sb-mostly-fixflo)
|
|
|
|
COMPOPTS="-dynamic -cc-options -D___OPTIMIZE_SPACE"
|
|
|
|
INSERTCODE="(declare (standard-bindings) (mostly-fixnum-flonum))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
sb-mostly-flofix)
|
|
|
|
COMPOPTS="-dynamic -cc-options -D___OPTIMIZE_SPACE"
|
|
|
|
INSERTCODE="(declare (standard-bindings) (mostly-flonum-fixnum))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
sb-mostly-fix)
|
|
|
|
COMPOPTS="-dynamic -cc-options -D___OPTIMIZE_SPACE"
|
|
|
|
INSERTCODE="(declare (standard-bindings) (mostly-fixnum))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
sb-mostly-flo)
|
|
|
|
COMPOPTS="-dynamic -cc-options -D___OPTIMIZE_SPACE"
|
|
|
|
INSERTCODE="(declare (standard-bindings) (mostly-flonum))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
sb-mostly-generic)
|
|
|
|
COMPOPTS="-dynamic -cc-options -D___OPTIMIZE_SPACE"
|
|
|
|
INSERTCODE="(declare (standard-bindings) (mostly-generic))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
r5rs)
|
|
|
|
COMPOPTS="-dynamic -cc-options -D___OPTIMIZE_SPACE"
|
|
|
|
INSERTCODE="(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
r6rs)
|
|
|
|
COMPOPTS="-dynamic -cc-options -D___OPTIMIZE_SPACE"
|
|
|
|
INSERTCODE="(declare (standard-bindings) (extended-bindings) (block))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
r6rs-unsafe)
|
|
|
|
COMPOPTS="-dynamic -cc-options -D___OPTIMIZE_SPACE"
|
|
|
|
INSERTCODE="(declare (standard-bindings) (extended-bindings) (block) (not safe))(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
r6rs-fixflo)
|
|
|
|
COMPOPTS="-dynamic -cc-options -D___OPTIMIZE_SPACE"
|
|
|
|
INSERTCODE="(declare (standard-bindings) (extended-bindings) (block))(define-macro (if-fixflo yes no) yes)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
r6rs-fixflo-unsafe)
|
|
|
|
COMPOPTS="-dynamic -cc-options -D___OPTIMIZE_SPACE"
|
|
|
|
INSERTCODE="(declare (standard-bindings) (extended-bindings) (block) (not safe))(define-macro (if-fixflo yes no) yes)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
|
|
|
|
gambit-int) NAME='Gambit-C-int'
|
|
|
|
COMP=gambit_int_comp
|
|
|
|
COMPOPTS=""
|
|
|
|
EXEC=gambit_int_exec
|
|
|
|
iterfile=num-iters-int.scm
|
|
|
|
extension=".scm"
|
|
|
|
case "$setting" in
|
|
|
|
r5rs)
|
|
|
|
INSERTCODE="(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS="(load \"%s.scm\")"
|
|
|
|
;;
|
|
|
|
r6rs)
|
|
|
|
INSERTCODE="(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS="(load \"%s.scm\")"
|
|
|
|
;;
|
|
|
|
r6rs-unsafe)
|
|
|
|
INSERTCODE="(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS="(load \"%s.scm\")"
|
|
|
|
;;
|
|
|
|
r6rs-fixflo)
|
|
|
|
INSERTCODE="(define-macro (if-fixflo yes no) yes)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS="(load \"%s.scm\")"
|
|
|
|
;;
|
|
|
|
r6rs-fixflo-unsafe)
|
|
|
|
INSERTCODE="(define-macro (if-fixflo yes no) yes)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS="(load \"%s.scm\")"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
|
|
|
|
bigloo) NAME='Bigloo'
|
|
|
|
COMP=bigloo_comp
|
|
|
|
EXEC=bigloo_exec
|
|
|
|
iterfile=num-iters.scm
|
|
|
|
extension=".scm"
|
|
|
|
case "$setting" in
|
|
|
|
r5rs)
|
|
|
|
COMPOPTS="-O6 -copt -O3 -copt -fomit-frame-pointer"
|
|
|
|
INSERTCODE="(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
COMP=nonexistent_comp
|
|
|
|
EXEC=nonexistent_exec
|
|
|
|
;;
|
|
|
|
r6rs)
|
|
|
|
COMPOPTS="-O6 -copt -O3 -copt -fomit-frame-pointer"
|
|
|
|
INSERTCODE="(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
r6rs-unsafe)
|
|
|
|
COMPOPTS="-Obench -copt -O3 -copt -fomit-frame-pointer"
|
|
|
|
INSERTCODE="(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
r6rs-fixflo)
|
|
|
|
COMPOPTS="-O6 -copt -O3 -copt -fomit-frame-pointer"
|
|
|
|
INSERTCODE="(define-macro (if-fixflo yes no) yes)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
r6rs-fixflo-unsafe)
|
|
|
|
COMPOPTS="-Obench -copt -O3 -copt -fomit-frame-pointer"
|
|
|
|
INSERTCODE="(define-macro (if-fixflo yes no) yes)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
|
|
|
|
bigloo-int) NAME='Bigloo-int'
|
|
|
|
COMP=bigloo_int_comp
|
|
|
|
COMPOPTS=""
|
|
|
|
EXEC=bigloo_int_exec
|
|
|
|
iterfile=num-iters-int.scm
|
|
|
|
extension=".scm"
|
|
|
|
INSERTCODE=""
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS="(load \"%s.scm\")"
|
|
|
|
;;
|
|
|
|
|
|
|
|
chicken) NAME='Chicken'
|
|
|
|
COMP=chicken_comp
|
|
|
|
EXEC=chicken_exec
|
|
|
|
iterfile=num-iters.scm
|
|
|
|
extension=".scm"
|
|
|
|
# Possible improvement: should -disable-interrupts be used? What
|
|
|
|
# is lost when -disable-interrupts is used? Is that a normal
|
|
|
|
# mode of execution?
|
|
|
|
case "$setting" in
|
|
|
|
r5rs)
|
|
|
|
COMPOPTS="-w -d0 -no-trace -no-usual-integrations"
|
|
|
|
INSERTCODE="(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
r6rs)
|
|
|
|
COMPOPTS="-w -d0 -O3 -no-trace -block"
|
|
|
|
INSERTCODE="(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
r6rs-unsafe)
|
|
|
|
COMPOPTS="-w -d0 -O3 -no-trace -block -unsafe -unsafe-libraries"
|
|
|
|
INSERTCODE="(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
r6rs-fixflo)
|
|
|
|
# It is impossible to use the fixnum/flonum specific
|
|
|
|
# procedures in this setting because they are unsafe.
|
|
|
|
COMPOPTS="-w -d0 -O3 -no-trace -block"
|
|
|
|
INSERTCODE="(define-macro (if-fixflo yes no) no)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
COMP=nonexistent_comp
|
|
|
|
EXEC=nonexistent_exec
|
|
|
|
;;
|
|
|
|
r6rs-fixflo-unsafe)
|
|
|
|
COMPOPTS="-w -d0 -O3 -no-trace -block -unsafe -unsafe-libraries"
|
|
|
|
INSERTCODE="(define-macro (if-fixflo yes no) yes)"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
|
|
|
|
chicken-int) NAME='Chicken-int'
|
|
|
|
COMP=chicken_int_comp
|
|
|
|
COMPOPTS=""
|
|
|
|
EXEC=chicken_int_exec
|
|
|
|
iterfile=num-iters-int.scm
|
|
|
|
extension=".scm"
|
|
|
|
INSERTCODE=""
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS="(load \"%s.scm\")"
|
|
|
|
;;
|
|
|
|
|
|
|
|
mzscheme) NAME='MzScheme'
|
|
|
|
COMP=mzscheme_comp
|
|
|
|
EXEC=mzscheme_exec
|
|
|
|
iterfile=num-iters.scm
|
|
|
|
extension=".ss"
|
|
|
|
case "$setting" in
|
|
|
|
r5rs)
|
|
|
|
COMPOPTS="-q"
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="(require (lib \"include.ss\")) (include \"%s-body.ss\") (main) ; %s"
|
|
|
|
REPLCOMMANDS="(load \"%s.ss\")"
|
|
|
|
;;
|
|
|
|
r6rs)
|
|
|
|
COMPOPTS="-q"
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
PREFIXCODE="(module %s mzscheme (define-syntax body-src \"%s-body.ss\")"
|
|
|
|
SUFFIXCODE="(require (lib \"include.ss\")) (define-syntax (include-body stx) #\`(begin (include #,(syntax-local-value #'body-src)) (main))) (include-body)) ; %s %s"
|
|
|
|
REPLCOMMANDS="(require \"%s.ss\")"
|
|
|
|
;;
|
|
|
|
r6rs-unsafe)
|
|
|
|
# MzScheme does not seem to have an unsafe mode.
|
|
|
|
COMPOPTS="-q"
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
PREFIXCODE="(module %s mzscheme (define-syntax body-src \"%s-body.ss\")"
|
|
|
|
SUFFIXCODE="(require (lib \"include.ss\")) (define-syntax (include-body stx) #\`(begin (include #,(syntax-local-value #'body-src)) (main))) (include-body)) ; %s %s"
|
|
|
|
REPLCOMMANDS="(require \"%s.ss\")"
|
|
|
|
COMP=nonexistent_comp
|
|
|
|
EXEC=nonexistent_exec
|
|
|
|
;;
|
|
|
|
r6rs-fixflo)
|
|
|
|
# MzScheme does not seem to have fixnum/flonum specific arithmetic operators.
|
|
|
|
COMPOPTS="-q"
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
PREFIXCODE="(module %s mzscheme (define-syntax body-src \"%s-body.ss\")"
|
|
|
|
SUFFIXCODE="(require (lib \"include.ss\")) (define-syntax (include-body stx) #\`(begin (include #,(syntax-local-value #'body-src)) (main))) (include-body)) ; %s %s"
|
|
|
|
REPLCOMMANDS="(require \"%s.ss\")"
|
|
|
|
COMP=nonexistent_comp
|
|
|
|
EXEC=nonexistent_exec
|
|
|
|
;;
|
|
|
|
r6rs-fixflo-unsafe)
|
|
|
|
# MzScheme does not seem to have fixnum/flonum specific arithmetic operators.
|
|
|
|
# MzScheme does not seem to have an unsafe mode.
|
|
|
|
COMPOPTS="-q"
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
PREFIXCODE="(module %s mzscheme (define-syntax body-src \"%s-body.ss\")"
|
|
|
|
SUFFIXCODE="(require (lib \"include.ss\")) (define-syntax (include-body stx) #\`(begin (include #,(syntax-local-value #'body-src)) (main))) (include-body)) ; %s %s"
|
|
|
|
REPLCOMMANDS="(require \"%s.ss\")"
|
|
|
|
COMP=nonexistent_comp
|
|
|
|
EXEC=nonexistent_exec
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
|
|
|
|
scheme48) NAME='Scheme48'
|
|
|
|
COMP=scheme48_comp
|
|
|
|
EXEC=scheme48_exec
|
|
|
|
iterfile=num-iters.scm
|
|
|
|
extension=".scm"
|
|
|
|
case "$setting" in
|
|
|
|
r5rs)
|
|
|
|
COMPOPTS="-h 20000000"
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=",bench off\n,open time posix bitwise ascii\n,load %s.scm\n,exit\n"
|
|
|
|
;;
|
|
|
|
r6rs)
|
|
|
|
COMPOPTS="-h 20000000"
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=",bench on\n,open time posix bitwise ascii\n,load %s.scm\n,exit\n"
|
|
|
|
;;
|
|
|
|
r6rs-unsafe)
|
|
|
|
# Scheme48 does not seem to have an unsafe mode.
|
|
|
|
COMPOPTS="-h 20000000"
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=",bench on\n,open time posix bitwise ascii\n,load %s.scm\n,exit\n"
|
|
|
|
COMP=nonexistent_comp
|
|
|
|
EXEC=nonexistent_exec
|
|
|
|
;;
|
|
|
|
r6rs-fixflo)
|
|
|
|
# Scheme48 does not seem to have fixnum/flonum specific arithmetic operators.
|
|
|
|
COMPOPTS="-h 20000000"
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=",bench on\n,open time posix bitwise ascii\n,load %s.scm\n,exit\n"
|
|
|
|
COMP=nonexistent_comp
|
|
|
|
EXEC=nonexistent_exec
|
|
|
|
;;
|
|
|
|
r6rs-fixflo-unsafe)
|
|
|
|
# Scheme48 does not seem to have fixnum/flonum specific arithmetic operators.
|
|
|
|
# Scheme48 does not seem to have an unsafe mode.
|
|
|
|
COMPOPTS="-h 20000000"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
REPLCOMMANDS=",bench on\n,open time posix bitwise ascii\n,load %s.scm\n,exit\n"
|
|
|
|
COMP=nonexistent_comp
|
|
|
|
EXEC=nonexistent_exec
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
|
|
|
|
larceny) NAME='Larceny'
|
|
|
|
COMP=larceny_comp
|
|
|
|
COMPOPTS=""
|
|
|
|
EXEC=larceny_exec
|
|
|
|
iterfile=num-iters.scm
|
|
|
|
extension=".scm"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
case "$setting" in
|
|
|
|
r5rs)
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
COMPSWITCHES="(compiler-switches 'standard)"
|
|
|
|
;;
|
|
|
|
r6rs)
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
COMPSWITCHES="(compiler-switches 'fast-safe)"
|
|
|
|
;;
|
|
|
|
r6rs-unsafe)
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
COMPSWITCHES="(compiler-switches 'fast-unsafe)"
|
|
|
|
;;
|
|
|
|
r6rs-fixflo)
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) yes)))"
|
|
|
|
COMPSWITCHES="(compiler-switches 'fast-safe)"
|
|
|
|
;;
|
|
|
|
r6rs-fixflo-unsafe)
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) yes)))"
|
|
|
|
COMPSWITCHES="(compiler-switches 'fast-unxsafe)"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
REPLCOMMANDS="(begin $COMPSWITCHES (load \"%s.scm\") (main))"
|
|
|
|
COMPCOMMANDS="(begin $COMPSWITCHES (compile-file \"%s.scm\"))"
|
|
|
|
EXECCOMMANDS="(begin (load \"%s.fasl\") (main))"
|
|
|
|
;;
|
|
|
|
|
|
|
|
henchman) NAME='Henchman'
|
|
|
|
COMP=henchman_comp
|
|
|
|
COMPOPTS=""
|
|
|
|
EXEC=henchman_exec
|
|
|
|
iterfile=num-iters.scm
|
|
|
|
extension=".scm"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
case "$setting" in
|
|
|
|
r5rs)
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
REPLCOMMANDS="(begin (compiler-switches 'standard) (load \"%s.scm\") (main))"
|
|
|
|
;;
|
|
|
|
r6rs)
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
REPLCOMMANDS="(begin (compiler-switches 'fast-safe) (load \"%s.scm\") (main))"
|
|
|
|
;;
|
|
|
|
r6rs-unsafe)
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
REPLCOMMANDS="(begin (compiler-switches 'fast-unsafe) (load \"%s.scm\") (main))"
|
|
|
|
;;
|
|
|
|
r6rs-fixflo)
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) yes)))"
|
|
|
|
REPLCOMMANDS="(begin (compiler-switches 'fast-safe) (load \"%s.scm\") (main))"
|
|
|
|
;;
|
|
|
|
r6rs-fixflo-unsafe)
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) yes)))"
|
|
|
|
REPLCOMMANDS="(begin (compiler-switches 'fast-unsafe) (load \"%s.scm\") (main))"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
|
2007-01-21 19:20:37 -05:00
|
|
|
ikarus) NAME='Ikarus'
|
2007-01-20 14:32:30 -05:00
|
|
|
COMP=ikarus_comp
|
|
|
|
COMPOPTS=""
|
|
|
|
EXEC=ikarus_exec
|
|
|
|
iterfile=num-iters.scm
|
|
|
|
extension=".scm"
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
case "$setting" in
|
|
|
|
r5rs)
|
|
|
|
REPLCOMMANDS="(begin (load \"%s.scm\") (main))"
|
|
|
|
;;
|
|
|
|
r6rs)
|
|
|
|
REPLCOMMANDS="(begin (import scheme) (load \"%s.scm\") (main))"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
|
|
chez) NAME='Chez-Scheme'
|
|
|
|
COMP=chez_comp
|
|
|
|
COMPOPTS=""
|
|
|
|
EXEC=chez_exec
|
|
|
|
iterfile=num-iters.scm
|
|
|
|
extension=".scm"
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
case "$setting" in
|
|
|
|
r5rs)
|
|
|
|
REPLCOMMANDS="(begin (optimize-level 1) (load \"%s.scm\") (main))"
|
|
|
|
;;
|
|
|
|
r6rs)
|
|
|
|
REPLCOMMANDS="(begin (optimize-level 2) (load \"%s.scm\") (main))"
|
|
|
|
;;
|
|
|
|
r6rs-unsafe)
|
|
|
|
REPLCOMMANDS="(begin (optimize-level 3) (load \"%s.scm\") (main))"
|
|
|
|
;;
|
|
|
|
r6rs-fixflo)
|
|
|
|
REPLCOMMANDS="(begin (optimize-level 2) (load \"%s.scm\") (main))"
|
|
|
|
;;
|
|
|
|
r6rs-fixflo-unsafe)
|
|
|
|
REPLCOMMANDS="(begin (optimize-level 3) (load \"%s.scm\") (main))"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
|
|
|
|
petite-chez) NAME='Petite-Chez-Scheme'
|
|
|
|
COMP=petite_chez_comp
|
|
|
|
COMPOPTS=""
|
|
|
|
EXEC=petite_chez_exec
|
|
|
|
iterfile=num-iters.scm
|
|
|
|
extension=".scm"
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
case "$setting" in
|
|
|
|
r5rs)
|
|
|
|
REPLCOMMANDS="(begin (optimize-level 1) (load \"%s.scm\") (main))"
|
|
|
|
;;
|
|
|
|
r6rs)
|
|
|
|
REPLCOMMANDS="(begin (optimize-level 2) (load \"%s.scm\") (main))"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
|
|
|
|
mit) NAME='MIT-Scheme'
|
|
|
|
COMP=mit_comp
|
|
|
|
COMPOPTS="-compiler -heap 6000"
|
|
|
|
EXEC=mit_exec
|
|
|
|
iterfile=num-iters.scm
|
|
|
|
extension=".scm"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
case "$setting" in
|
|
|
|
r5rs)
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
REPLCOMMANDS="(begin (load \"%s\") (main))"
|
|
|
|
;;
|
|
|
|
r6rs)
|
|
|
|
INSERTCODE="(declare (usual-integrations)) (define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
REPLCOMMANDS="(begin (load \"%s\") (main))"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
|
|
|
|
mit-int) NAME='MIT-Scheme-int'
|
|
|
|
COMP=nonexistent_comp
|
|
|
|
COMPOPTS=""
|
|
|
|
EXEC=mit_exec
|
|
|
|
iterfile=num-iters-int.scm
|
|
|
|
extension=".scm"
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
case "$setting" in
|
|
|
|
r5rs)
|
|
|
|
INSERTCODE="(define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
REPLCOMMANDS="(begin (load \"%s\") (main))"
|
|
|
|
;;
|
|
|
|
r6rs)
|
|
|
|
INSERTCODE="(declare (usual-integrations)) (define-syntax if-fixflo (syntax-rules () ((if-fixflo yes no) no)))"
|
|
|
|
REPLCOMMANDS="(begin (load \"%s\") (main))"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
REPLCOMMANDS="(load \"%s.scm\")"
|
|
|
|
;;
|
|
|
|
|
|
|
|
scm) NAME='SCM'
|
|
|
|
COMP=scm_comp
|
|
|
|
COMPOPTS=""
|
|
|
|
EXEC=scm_exec
|
|
|
|
iterfile=num-iters-int.scm
|
|
|
|
extension=".scm"
|
|
|
|
INSERTCODE=""
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS="(load \"%s.scm\")"
|
|
|
|
;;
|
|
|
|
|
|
|
|
stalin) NAME='Stalin'
|
|
|
|
COMP=stalin_comp
|
|
|
|
COMPOPTS=""
|
|
|
|
INSERTCODE=""
|
|
|
|
EXEC=stalin_exec
|
|
|
|
iterfile=num-iters.scm
|
|
|
|
extension=".scm"
|
|
|
|
INSERTCODE=""
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS=""
|
|
|
|
;;
|
|
|
|
|
|
|
|
stk) NAME='STk'
|
|
|
|
COMP=stk_comp
|
|
|
|
COMPOPTS=""
|
|
|
|
INSERTCODE=""
|
|
|
|
EXEC=stk_exec
|
|
|
|
iterfile=num-iters-int.scm
|
|
|
|
extension=".scm"
|
|
|
|
INSERTCODE=""
|
|
|
|
PREFIXCODE="; %s %s"
|
|
|
|
SUFFIXCODE="; %s %s"
|
|
|
|
REPLCOMMANDS="(load \"%s.scm\")"
|
|
|
|
;;
|
|
|
|
|
|
|
|
awk) NAME='AWK'
|
|
|
|
COMP=awk_comp
|
|
|
|
COMPOPTS=""
|
|
|
|
INSERTCODE=""
|
|
|
|
EXEC=awk_exec
|
|
|
|
iterfile=
|
|
|
|
extension=".awk"
|
|
|
|
;;
|
|
|
|
|
|
|
|
cc) NAME='CC'
|
|
|
|
COMP=cc_comp
|
|
|
|
COMPOPTS=""
|
|
|
|
INSERTCODE=""
|
|
|
|
EXEC=cc_exec
|
|
|
|
iterfile=
|
|
|
|
extension=".c"
|
|
|
|
;;
|
|
|
|
|
|
|
|
gcc) NAME='GCC'
|
|
|
|
COMP=gcc_comp
|
|
|
|
COMPOPTS=""
|
|
|
|
INSERTCODE=""
|
|
|
|
EXEC=gcc_exec
|
|
|
|
iterfile=
|
|
|
|
extension=".c"
|
|
|
|
;;
|
|
|
|
|
|
|
|
java) NAME='Java'
|
|
|
|
COMP=java_comp
|
|
|
|
COMPOPTS=""
|
|
|
|
INSERTCODE=""
|
|
|
|
EXEC=java_exec
|
|
|
|
iterfile=
|
|
|
|
extension=".java"
|
|
|
|
;;
|
|
|
|
|
|
|
|
*) error '>>> Unknown system'
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
if [ -n "$forceiters" ] ; then iterfile="$forceiters" ; fi
|
|
|
|
|
|
|
|
cd sys/$system
|
|
|
|
if [ $? != 0 ] ; then
|
|
|
|
echo "ERROR: Can't change to directory sys/$system."
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
{
|
|
|
|
echo
|
|
|
|
echo '****************************'
|
|
|
|
echo Benchmarking ${NAME}-${setting} on `date` under `uname -a`
|
|
|
|
} >> ../../results.${NAME}-${setting}
|
|
|
|
|
|
|
|
for program in $benchmarks ; do
|
|
|
|
evaluate $program
|
|
|
|
done
|
|
|
|
cd ../..
|
|
|
|
if [ $? != 0 ] ; then
|
|
|
|
echo "ERROR: Can't change back to benchmark directory."
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
done
|