GNAL/scripts/benchmark.sh

87 lines
2.2 KiB
Bash

echo "Benchmarking GNAL spiral generation"
VERSION=`bash ./scripts/version.sh`
CPU=`bash ./scripts/cpu.sh`
DATE=`date -u +%s` #timestamp in seconds
NOTES="./notes/benchmark.csv"
ROTATIONS=( 1 2 5 10 20 )
DIAMETERS=( 47 225 300 )
COMPLETE=( 40 60 )
mkdir -p benchmark
if test -f "${NOTES}"; then
echo "Benchmark file exists"
else
echo "version,cpu,date,source,diameter,rotations,fn,size,facets,volume,time" > $NOTES
fi
for SPIRAL in ./spiral/*.scad
do
FILENAME=`basename ${SPIRAL}`
echo "Rendering ${SPIRAL}..."
for ROT in "${ROTATIONS[@]}"
do
:
for D in "${DIAMETERS[@]}"
do
:
echo "Rendering ${SPIRAL} for ${ROT} rotations @ ${D}mm"
#TMP=`mktemp`
TMP="benchmark/${FILENAME}_${D}_${ROT}_100"
if test -f "${TMP}.stl"; then
echo "Benchmark for ${TMP} exists"
else
start=`date +%s`
openscad -o "${TMP}.stl" -D N=${ROT} -D D=${D} -D FN=100 "${SPIRAL}"
end=`date +%s`
runtime=$((end-start))
size=`wc -c < "${TMP}.stl"`
size=`echo $size | xargs`
if ! [ -x "$(command -v admesh)" ]; then
facets="N/A"
volume="N/A"
else
ao=`admesh -c "$stl"`
facets=`echo "$ao" | grep "Number of facets" | awk '{print $5}'`
volume=`echo "$ao" | grep "Number of parts" | awk '{print $8}'`
fi
line="${VERSION},${CPU},${DATE},${FILENAME},${D},${ROT},100,$size,$facets,$volume,$runtime"
echo $line
echo $line >> $NOTES
fi
#rm "${TMP}.stl"
done
done
for C in "${COMPLETE[@]}"
do
:
echo "Rendering complete ${SPIRAL} with ${C} rotations"
#TMP=`mktemp`
TMP="benchmark/${FILENAME}_47_${C}_100"
if test -f "${TMP}.stl"; then
echo "Benchmark for ${TMP} exists"
else
start=`date +%s`
openscad -o "${TMP}.stl" -D N=${C} -D D=47 -D FN=100 "${SPIRAL}"
end=`date +%s`
runtime=$((end-start))
size=`wc -c < "${TMP}.stl"`
size=`echo $size | xargs`
ao=`admesh -c "${TMP}.stl"`
facets=`echo "$ao" | grep "Number of facets" | awk '{print $5}'`
volume=`echo "$ao" | grep "Number of parts" | awk '{print $8}'`
line="${VERSION},${CPU},${DATE},${FILENAME},47,${C},100,$size,$facets,$volume,$runtime"
echo $line >> $NOTES
echo $line
#rm "${TMP}.stl"
fi
done
done