summaryrefslogtreecommitdiff
path: root/test/bench/shootout/timing.sh
diff options
context:
space:
mode:
Diffstat (limited to 'test/bench/shootout/timing.sh')
-rwxr-xr-xtest/bench/shootout/timing.sh157
1 files changed, 94 insertions, 63 deletions
diff --git a/test/bench/shootout/timing.sh b/test/bench/shootout/timing.sh
index 2db895c26..a06c326c3 100755
--- a/test/bench/shootout/timing.sh
+++ b/test/bench/shootout/timing.sh
@@ -18,6 +18,33 @@ case "$O" in
gccm=-m64;;
esac
+EXE="out"
+havepcre=true
+haveglib=true
+havegmp=true
+case "$(uname)" in
+*MINGW* | *WIN32* | *CYGWIN*)
+ havepcre=false
+ haveglib=false
+ havegmp=false
+ if which pkg-config >/dev/null 2>&1; then
+ if pkg-config --cflags libpcre >/dev/null 2>&1
+ then
+ echo "havepcre"
+ havepcre=true
+ fi
+ if pkg-config --cflags glib-2.0 >/dev/null 2>&1
+ then
+ haveglib=true
+ fi
+ if pkg-config --cflags gmp >/dev/null 2>&1
+ then
+ havegmp=true
+ fi
+ fi
+ EXE=exe;;
+esac
+
PATH=.:$PATH
havegccgo=false
@@ -34,11 +61,11 @@ X-test)
esac
gc() {
- $GC $1.go; $LD $1.$O
+ $GC $1.go; $LD -o $O.$EXE $1.$O
}
gc_B() {
- $GC -B $1.go; $LD $1.$O
+ $GC -B $1.go; $LD -o $O.$EXE $1.$O
}
runonly() {
@@ -86,122 +113,126 @@ run() {
fasta() {
runonly echo 'fasta -n 25000000'
- run "gcc $gccm -O2 fasta.c" a.out 25000000
- run 'gccgo -O2 fasta.go' a.out -n 25000000 #commented out until WriteString is in bufio
- run 'gc fasta' $O.out -n 25000000
- run 'gc_B fasta' $O.out -n 25000000
+ run "gcc $gccm -O2 fasta.c" a.$EXE 25000000
+ run 'gccgo -O2 fasta.go' a.$EXE -n 25000000 #commented out until WriteString is in bufio
+ run 'gc fasta' $O.$EXE -n 25000000
+ run 'gc_B fasta' $O.$EXE -n 25000000
}
revcomp() {
runonly gcc -O2 fasta.c
- runonly a.out 25000000 > x
+ runonly a.$EXE 25000000 > x
runonly echo 'reverse-complement < output-of-fasta-25000000'
- run "gcc $gccm -O2 reverse-complement.c" a.out < x
- run 'gccgo -O2 reverse-complement.go' a.out < x
- run 'gc reverse-complement' $O.out < x
- run 'gc_B reverse-complement' $O.out < x
+ run "gcc $gccm -O2 reverse-complement.c" a.$EXE < x
+ run 'gccgo -O2 reverse-complement.go' a.$EXE < x
+ run 'gc reverse-complement' $O.$EXE < x
+ run 'gc_B reverse-complement' $O.$EXE < x
rm x
}
nbody() {
runonly echo 'nbody -n 50000000'
- run "gcc $gccm -O2 nbody.c -lm" a.out 50000000
- run 'gccgo -O2 nbody.go' a.out -n 50000000
- run 'gc nbody' $O.out -n 50000000
- run 'gc_B nbody' $O.out -n 50000000
+ run "gcc $gccm -O2 nbody.c -lm" a.$EXE 50000000
+ run 'gccgo -O2 nbody.go' a.$EXE -n 50000000
+ run 'gc nbody' $O.$EXE -n 50000000
+ run 'gc_B nbody' $O.$EXE -n 50000000
}
binarytree() {
runonly echo 'binary-tree 15 # too slow to use 20'
- run "gcc $gccm -O2 binary-tree.c -lm" a.out 15
- run 'gccgo -O2 binary-tree.go' a.out -n 15
- run 'gccgo -O2 binary-tree-freelist.go' a.out -n 15
- run 'gc binary-tree' $O.out -n 15
- run 'gc binary-tree-freelist' $O.out -n 15
+ run "gcc $gccm -O2 binary-tree.c -lm" a.$EXE 15
+ run 'gccgo -O2 binary-tree.go' a.$EXE -n 15
+ run 'gccgo -O2 binary-tree-freelist.go' a.$EXE -n 15
+ run 'gc binary-tree' $O.$EXE -n 15
+ run 'gc binary-tree-freelist' $O.$EXE -n 15
}
fannkuch() {
runonly echo 'fannkuch 12'
- run "gcc $gccm -O2 fannkuch.c" a.out 12
- run 'gccgo -O2 fannkuch.go' a.out -n 12
- run 'gccgo -O2 fannkuch-parallel.go' a.out -n 12
- run 'gc fannkuch' $O.out -n 12
- run 'gc fannkuch-parallel' $O.out -n 12
- run 'gc_B fannkuch' $O.out -n 12
+ run "gcc $gccm -O2 fannkuch.c" a.$EXE 12
+ run 'gccgo -O2 fannkuch.go' a.$EXE -n 12
+ run 'gccgo -O2 fannkuch-parallel.go' a.$EXE -n 12
+ run 'gc fannkuch' $O.$EXE -n 12
+ run 'gc fannkuch-parallel' $O.$EXE -n 12
+ run 'gc_B fannkuch' $O.$EXE -n 12
}
regexdna() {
runonly gcc -O2 fasta.c
- runonly a.out 100000 > x
+ runonly a.$EXE 100000 > x
runonly echo 'regex-dna 100000'
- run "gcc $gccm -O2 regex-dna.c -lpcre" a.out <x
- run 'gccgo -O2 regex-dna.go' a.out <x
- run 'gccgo -O2 regex-dna-parallel.go' a.out <x
- run 'gc regex-dna' $O.out <x
- run 'gc regex-dna-parallel' $O.out <x
- run 'gc_B regex-dna' $O.out <x
+ if $havepcre; then
+ run "gcc $gccm -O2 regex-dna.c $(pkg-config libpcre --cflags --libs)" a.$EXE <x
+ fi
+ run 'gccgo -O2 regex-dna.go' a.$EXE <x
+ run 'gccgo -O2 regex-dna-parallel.go' a.$EXE <x
+ run 'gc regex-dna' $O.$EXE <x
+ run 'gc regex-dna-parallel' $O.$EXE <x
+ run 'gc_B regex-dna' $O.$EXE <x
rm x
}
spectralnorm() {
runonly echo 'spectral-norm 5500'
- run "gcc $gccm -O2 spectral-norm.c -lm" a.out 5500
- run 'gccgo -O2 spectral-norm.go' a.out -n 5500
- run 'gc spectral-norm' $O.out -n 5500
- run 'gc_B spectral-norm' $O.out -n 5500
+ run "gcc $gccm -O2 spectral-norm.c -lm" a.$EXE 5500
+ run 'gccgo -O2 spectral-norm.go' a.$EXE -n 5500
+ run 'gc spectral-norm' $O.$EXE -n 5500
+ run 'gc_B spectral-norm' $O.$EXE -n 5500
}
knucleotide() {
runonly gcc -O2 fasta.c
- runonly a.out 1000000 > x # should be using 25000000
+ runonly a.$EXE 1000000 > x # should be using 25000000
runonly echo 'k-nucleotide 1000000'
- if [ $mode = run ]; then
- run "gcc -O2 k-nucleotide.c $(pkg-config glib-2.0 --cflags --libs)" a.out <x
+ if [ $mode = run ] && $haveglib; then
+ run "gcc -O2 k-nucleotide.c $(pkg-config glib-2.0 --cflags --libs)" a.$EXE <x
fi
- run 'gccgo -O2 k-nucleotide.go' a.out <x
- run 'gccgo -O2 k-nucleotide-parallel.go' a.out <x
- run 'gc k-nucleotide' $O.out <x
- run 'gc k-nucleotide-parallel' $O.out <x
- run 'gc_B k-nucleotide' $O.out <x
+ run 'gccgo -O2 k-nucleotide.go' a.$EXE <x
+ run 'gccgo -O2 k-nucleotide-parallel.go' a.$EXE <x
+ run 'gc k-nucleotide' $O.$EXE <x
+ run 'gc k-nucleotide-parallel' $O.$EXE <x
+ run 'gc_B k-nucleotide' $O.$EXE <x
rm x
}
mandelbrot() {
runonly echo 'mandelbrot 16000'
- run "gcc $gccm -O2 mandelbrot.c" a.out 16000
- run 'gccgo -O2 mandelbrot.go' a.out -n 16000
- run 'gc mandelbrot' $O.out -n 16000
- run 'gc_B mandelbrot' $O.out -n 16000
+ run "gcc $gccm -O2 mandelbrot.c" a.$EXE 16000
+ run 'gccgo -O2 mandelbrot.go' a.$EXE -n 16000
+ run 'gc mandelbrot' $O.$EXE -n 16000
+ run 'gc_B mandelbrot' $O.$EXE -n 16000
}
meteor() {
runonly echo 'meteor 2098'
- run "gcc $gccm -O2 meteor-contest.c" a.out 2098
- run 'gccgo -O2 meteor-contest.go' a.out -n 2098
- run 'gc meteor-contest' $O.out -n 2098
- run 'gc_B meteor-contest' $O.out -n 2098
+ run "gcc $gccm -O2 meteor-contest.c" a.$EXE 2098
+ run 'gccgo -O2 meteor-contest.go' a.$EXE -n 2098
+ run 'gc meteor-contest' $O.$EXE -n 2098
+ run 'gc_B meteor-contest' $O.$EXE -n 2098
}
pidigits() {
runonly echo 'pidigits 10000'
- run "gcc $gccm -O2 pidigits.c -lgmp" a.out 10000
- run 'gccgo -O2 pidigits.go' a.out -n 10000
- run 'gc pidigits' $O.out -n 10000
- run 'gc_B pidigits' $O.out -n 10000
+ if $havegmp; then
+ run "gcc $gccm -O2 pidigits.c -lgmp" a.$EXE 10000
+ fi
+ run 'gccgo -O2 pidigits.go' a.$EXE -n 10000
+ run 'gc pidigits' $O.$EXE -n 10000
+ run 'gc_B pidigits' $O.$EXE -n 10000
}
threadring() {
runonly echo 'threadring 50000000'
- run "gcc $gccm -O2 threadring.c -lpthread" a.out 50000000
- run 'gccgo -O2 threadring.go' a.out -n 50000000
- run 'gc threadring' $O.out -n 50000000
+ run "gcc $gccm -O2 threadring.c -lpthread" a.$EXE 50000000
+ run 'gccgo -O2 threadring.go' a.$EXE -n 50000000
+ run 'gc threadring' $O.$EXE -n 50000000
}
chameneos() {
runonly echo 'chameneos 6000000'
- run "gcc $gccm -O2 chameneosredux.c -lpthread" a.out 6000000
- run 'gccgo -O2 chameneosredux.go' a.out 6000000
- run 'gc chameneosredux' $O.out 6000000
+ run "gcc $gccm -O2 chameneosredux.c -lpthread" a.$EXE 6000000
+ run 'gccgo -O2 chameneosredux.go' a.$EXE 6000000
+ run 'gc chameneosredux' $O.$EXE 6000000
}
case $# in