kanidm/server/web_ui/find_best_brotli.sh

65 lines
1.5 KiB
Bash
Raw Normal View History

#!/bin/bash
# check brotli's installed
if ! command -v brotli &> /dev/null
then
echo "brotli tool could not be found, please make sure you have it in your path!"
exit 1
fi
# Exit if no argument is provided
if [ $# -eq 0 ]; then
echo "No filename provided"
exit 1
fi
filename=$1
echo "#####################################"
echo "Compressing $1"
# Exit if the file doesn't exist
if [ ! -f "${filename}" ]; then
echo "File ${filename} not found"
exit 1
fi
original_size_kb=$(du -k "${filename}" | cut -f1)
tmpfile=$(mktemp)
for num in {10..24}
do
{
size=$(brotli --lgwin="${num}" -c "${filename}" | wc -c)
echo "${num} ${size}" >> "${tmpfile}"
} &
done
# Wait for all background jobs to finish
wait
# Process results
{
read -r min_num min_size
while read -r num size; do
if (( size < min_size )); then
min_size=$size
min_num=$num
fi
done
echo "Original size was ${original_size_kb}KB"
echo "Smallest compressed size was ${min_size} bytes for NUM=${min_num}"
} < "${tmpfile}"
# Clean up
rm "${tmpfile}"
# Use the smallest NUM value found in the test command
brotli --force --lgwin="${min_num}" "${filename}" -o "${filename}.br"
# find the difference in the file sizes
compressed_size_kb=$(du -k "${filename}.br" | cut -f1)
size_difference=$(bc <<< "${original_size_kb} - ${compressed_size_kb}")
echo "The compressed file is ${size_difference}KB smaller than the original file"