You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
2.0 KiB

#!/bin/sh
MERGECOUNT=100
rm -rf /tmp/duk-graph
mkdir /tmp/duk-graph
cd /tmp/duk-graph || exit 1
echo "Working in: `pwd`"
git clone https://github.com/svaarala/duktape.git
cd /tmp/duk-graph/duktape || exit 1
for sha in `git log -n $MERGECOUNT --merges --oneline --decorate=no | cut -f 1 -d ' '`; do
cd /tmp/duk-graph/duktape || exit 1
echo $sha
git describe
git reset --hard
git clean --force
git checkout $sha
make clean
rm -rf ./prep; mkdir ./prep
python tools/configure.py --output ./prep --option-file config/examples/low_memory.yaml
rm -f ./prep/hello
gcc -o ./prep/hello -std=c99 -Wall -Os -fomit-frame-pointer -flto -fno-asynchronous-unwind-tables -ffunction-sections -Wl,--gc-sections -I./prep ./prep/duktape.c examples/hello/hello.c -lm
size ./prep/hello | grep prep/hello | awk '/.*/ { print $4 }' >> /tmp/duk-graph/sizes-x64.txt
rm -f ./prep/hello
gcc -o ./prep/hello -std=c99 -Wall -Os -fomit-frame-pointer -flto -fno-asynchronous-unwind-tables -ffunction-sections -Wl,--gc-sections -m32 -I./prep ./prep/duktape.c examples/hello/hello.c -lm
size ./prep/hello | grep prep/hello | awk '/.*/ { print $4 }' >> /tmp/duk-graph/sizes-x86.txt
rm -f ./prep/hello
gcc -o ./prep/hello -std=c99 -Wall -Os -fomit-frame-pointer -flto -fno-asynchronous-unwind-tables -ffunction-sections -Wl,--gc-sections -mx32 -I./prep ./prep/duktape.c examples/hello/hello.c -lm
size ./prep/hello | grep prep/hello | awk '/.*/ { print $4 }' >> /tmp/duk-graph/sizes-x32.txt
rm -rf ./prep
done
cat /tmp/duk-graph/sizes-x64.txt | tac | gnuplot -p -e 'set term png; set output "/tmp/duk-graph-size-x64.png"; set xlabel "merge"; set ylabel "bytes"; plot "/dev/stdin" with lines'
cat /tmp/duk-graph/sizes-x86.txt | tac | gnuplot -p -e 'set term png; set output "/tmp/duk-graph-size-x86.png"; set xlabel "merge"; set ylabel "bytes"; plot "/dev/stdin" with lines'
cat /tmp/duk-graph/sizes-x32.txt | tac | gnuplot -p -e 'set term png; set output "/tmp/duk-graph-size-x32.png"; set xlabel "merge"; set ylabel "bytes"; plot "/dev/stdin" with lines'
ls -l /tmp/duk-graph-*.png