set -e

files=(*.pkg.tar)

compressors=('zstd -c -T0 -18 -'
             'zstd -c -T0 -19 -'
             'zstd -c -T0 -20 -'
             'zstd -c -T0 -21 -'
             'xz -c -z -')

measurecmd='./time -f %E\n%M'
sizecmd='wc -c'
calccmd='./bc'

printf '%s,%s,%s,%s,%s,%s,%s,%s,%s\n' 'Compressor' 'File' 'Size (Bytes)' 'Compressed Size (Bytes)' 'Ratio' 'Time ([hh:]mm:ss)' 'Maximum RSS in Kbytes' 'Decompress time ([hh:]mm:ss)' 'Decompress RSS in KBytes'
for compressor in "${compressors[@]}"
do
	for file in "${files[@]}"
	do
		result="$(tail -n2 <<< "$(${measurecmd} ${compressor} < ${file} 2>&1 > bench-tmp)")"
		time="$(sed -n 1p <<< ${result})"
		mem="$(sed -n 2p <<< ${result})"
		sizeorig="$(< "${file}" ${sizecmd} | cut -d" " -f1)"
		sizecomp="$(< bench-tmp ${sizecmd} | cut -d" " -f1)"
		ratio="$(${calccmd} <<< "scale=2;${sizecomp}/${sizeorig}*100" | cut -d"." -f1)"
		decresult="$(tail -n2 <<< "$(${measurecmd} $(cut -d" " -f1 <<< "${compressor}") -d bench-tmp -c 2>&1 > /dev/null)")"
		dectime="$(sed -n 1p <<< ${decresult})"
		decmem="$(sed -n 2p <<< ${decresult})"
		printf '%s,%s,%s,%s,%s,%s,%s,%s,%s\n' "${compressor}" "${file}" "${sizeorig}" "${sizecomp}" "${ratio}" "${time}" "${mem}" "${dectime}" "${decmem}"
	done
done
