Skip to content

Instantly share code, notes, and snippets.

@nbkolchin
Last active January 14, 2022 15:07
Show Gist options
  • Save nbkolchin/3f200db95f522ae9e5f3d0c4d7d36aa0 to your computer and use it in GitHub Desktop.
Save nbkolchin/3f200db95f522ae9e5f3d0c4d7d36aa0 to your computer and use it in GitHub Desktop.
1.2m lines compiling
#!/bin/bash
if [ "$1" == "-h" ]; then
echo "Usage: gen.sh [lines count]"
exit 0
fi
if [ "x$1" != "x" ]; then
LIMIT=$1
else
LIMIT=100000
fi
echo generating $LIMIT lines tests for Forth, C, Python and Go.
# generate forth code
rm -f test.fth
for i in `seq 1 $LIMIT`; do
echo "VARIABLE A$i : T$i A$i @ DUP * ; \\ $i lorem ipsum bla bla" >> test.fth
done
echo BYE >> test.fth
rm -f test2.fth
for i in `seq 1 $LIMIT`; do
echo "$i VALUE A$i : T$i A$i DUP * ; \\ $i lorem ipsum bla bla" >> test2.fth
done
echo BYE >> test2.fth
# generate C code
rm -f test.c
for i in `seq 1 $LIMIT`; do
echo "int a$i; int f$i() { return a$i * a$i; } // $i lorem ipsum bla bla" >> test.c
done
# generate Go code
echo "package testbuild" > test.go
for i in `seq 1 $LIMIT`; do
echo "var a$i int = $i; func f$i() int { return a$i * a$i; } // $i lorem ipsum bla bla" >> test.go
done
# generate Python code
rm -f test.py
for i in `seq 1 $LIMIT`; do
printf "a$i = $i\ndef f$i():\n\treturn a$i*a$i\n\n" >> test.py
done
#!/bin/bash
if [ "$1" == "-h" ]; then
echo "Usage: gen3.sh [lines count]"
exit 0
fi
if [ "x$1" != "x" ]; then
LIMIT=$1
else
LIMIT=100000
fi
echo generating $LIMIT lines tests for Forth, C, Python and Go.
# generate forth code
rm -f test.fth
for i in `seq 1 $LIMIT`; do
echo "VARIABLE A$i : T$i A$i @ DUP * ; \\ $i lorem ipsum bla bla" >> test.fth
done
echo BYE >> test.fth
rm -f test2.fth
for i in `seq 1 $LIMIT`; do
echo "$i VALUE A$i : T$i A$i DUP * ; \\ $i lorem ipsum bla bla" >> test2.fth
done
echo BYE >> test2.fth
# generate C code
rm -f test.c
for i in `seq 1 $LIMIT`; do
echo "int a$i; int f$i() { return a$i * a$i; } // $i lorem ipsum bla bla" >> test.c
done
# generate Go code
rm -rf test.go
echo "package testbuild" > test.go
for i in `seq 1 $LIMIT`; do
echo "var a$i int = $i; func f$i() int { return a$i * a$i; } // $i lorem ipsum bla bla" >> test.go
done
# generate Python code
rm -f test.py
for i in `seq 1 $LIMIT`; do
printf "a$i = $i\ndef f$i():\n\treturn a$i*a$i\n\n" >> test.py
done
#!/bin/bash
TESTNAME=test
TESTNAME2=test2
FORTHTEST=$TESTNAME.fth
FORTHTEST2=$TESTNAME2.fth
CTEST=$TESTNAME.c
GOTEST=$TESTNAME.go
PYTHONTEST=$TESTNAME.py
function run() {
echo $@
time ($@ > /dev/null 2> /dev/null)
}
vfxlin32 1073741824 set-size save /tmp/vfxlin32 bye > /dev/null 2> /dev/null
run /tmp/vfxlin32 include $FORTHTEST
run /tmp/vfxlin32 include $FORTHTEST2
rm -f /tmp/vfxlin32
vfxlin64 1073741824 set-size save /tmp/vfxlin64 bye > /dev/null 2> /dev/null
run /tmp/vfxlin64 include $FORTHTEST
run /tmp/vfxlin64 include $FORTHTEST2
rm -f /tmp/vfxlin64
run gforth-itc -m 1073741824 $FORTHTEST
run gforth-itc -m 1073741824 $FORTHTEST2
run gforth-fast -m 1073741824 $FORTHTEST
run gforth-fast -m 1073741824 $FORTHTEST2
run ~/tmp/gforth/gforth-itc -m 1073741824 $FORTHTEST
run ~/tmp/gforth/gforth-itc -m 1073741824 $FORTHTEST2
run ~/tmp/gforth/gforth-fast -m 1073741824 $FORTHTEST
run ~/tmp/gforth/gforth-fast -m 1073741824 $FORTHTEST2
run gcc -O0 $CTEST -o $CTEST.o
rm -f $CTEST.o
run gcc -O1 $CTEST -o $CTEST.o
rm -f $CTEST.o
run gcc -O2 $CTEST -o $CTEST.o
rm -f $CTEST.o
run gcc -O3 $CTEST -o $CTEST.o
rm -f $CTEST.o
run gcc -Ofast $CTEST -o $CTEST.o
rm -f $CTEST.o
run gcc -Og $CTEST -o $CTEST.o
rm -f $CTEST.o
run gcc -Os $CTEST -o $CTEST.o
rm -f $CTEST.o
run clang -O0 $CTEST -o $CTEST.o
rm -f $CTEST.o
run clang -O1 $CTEST -o $CTEST.o
rm -f $CTEST.o
run clang -O2 $CTEST -o $CTEST.o
rm -f $CTEST.o
run clang -O3 $CTEST -o $CTEST.o
rm -f $CTEST.o
run clang -Ofast $CTEST -o $CTEST.o
rm -f $CTEST.o
run clang -Og $CTEST -o $CTEST.o
rm -f $CTEST.o
run clang -Os $CTEST -o $CTEST.o
rm -f $CTEST.o
run clang -Oz $CTEST -o $CTEST.o
rm -f $CTEST.o
run go build -a $GOTEST
run python2 $PYTHONTEST
run python3 $PYTHONTEST
run pypy $PYTHONTEST
run pypy3 $PYTHONTEST
#!/bin/bash
TESTNAME=test3
FORTHTEST=$TESTNAME.fth
CTEST=$TESTNAME.c
GOTEST=$TESTNAME.go
PYTHONTEST=$TESTNAME.py
function run() {
echo $@
time ($@ > /dev/null 2> /dev/null)
}
# Crashes
# vfxlin32 1073741824 set-size save /tmp/vfxlin32 bye > /dev/null 2> /dev/null
# run /tmp/vfxlin32 include $FORTHTEST
# run /tmp/vfxlin32 include $FORTHTEST2
# rm -f /tmp/vfxlin32
#
# Crashes
# vfxlin64 1073741824 set-size save /tmp/vfxlin64 bye > /dev/null 2> /dev/null
# run /tmp/vfxlin64 include $FORTHTEST
# run /tmp/vfxlin64 include $FORTHTEST2
# rm -f /tmp/vfxlin64
run gforth-itc -m 1073741824 $FORTHTEST
run gforth-fast -m 1073741824 $FORTHTEST
run ~/tmp/gforth/gforth-itc -m 1073741824 $FORTHTEST
run ~/tmp/gforth/gforth-fast -m 1073741824 $FORTHTEST
run ikforth -d 512m -f $FORTHTEST
run kforth64 $FORTHTEST
run sf 1073741824 set-memsize include $FORTHTEST
run gcc -O0 $CTEST -o $CTEST.o
rm -f $CTEST.o
run gcc -O1 $CTEST -o $CTEST.o
rm -f $CTEST.o
run gcc -O2 $CTEST -o $CTEST.o
rm -f $CTEST.o
run gcc -O3 $CTEST -o $CTEST.o
rm -f $CTEST.o
run gcc -Ofast $CTEST -o $CTEST.o
rm -f $CTEST.o
run gcc -Og $CTEST -o $CTEST.o
rm -f $CTEST.o
run gcc -Os $CTEST -o $CTEST.o
rm -f $CTEST.o
run clang -O0 $CTEST -o $CTEST.o
rm -f $CTEST.o
run clang -O1 $CTEST -o $CTEST.o
rm -f $CTEST.o
run clang -O2 $CTEST -o $CTEST.o
rm -f $CTEST.o
run clang -O3 $CTEST -o $CTEST.o
rm -f $CTEST.o
run clang -Ofast $CTEST -o $CTEST.o
rm -f $CTEST.o
run clang -Og $CTEST -o $CTEST.o
rm -f $CTEST.o
run clang -Os $CTEST -o $CTEST.o
rm -f $CTEST.o
run clang -Oz $CTEST -o $CTEST.o
rm -f $CTEST.o
run go build -a $GOTEST
run python2 $PYTHONTEST
run python3 $PYTHONTEST
run pypy $PYTHONTEST
run pypy3 $PYTHONTEST
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment