2024-01-22 08:35:00 +01:00

87 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
set -e
BENCHMARKS=$1
if [ -z "$BENCHMARKS" ]; then
BENCHMARKS="extract,mkdwarfs"
fi
HF=hyperfine
NPROC=$(nproc)
NWARM=2
NFAST=10
NSLOW=5
ARCH=$(ls -d1 dwarfs-*-Linux-*/ | head -n1)
HASH=$ARCH
ARCH=${ARCH/*-Linux-/}
ARCH=${ARCH/-*/}
HASH=${HASH/-Linux-*/}
HASH=${HASH/*-/}
OUT=reports-$HASH
mkdir -p $OUT
for i in dwarfs-*-Linux-*/; do
t=${i/*-Linux-/}
t=${t/\//}
for n in mkdwarfs dwarfs dwarfsck dwarfsextract; do
ln -sf ${i}*bin/$n $n-$t
done
done
DATASETS='audio disk perl video'
MKDWARFS=$(ls -1 ./mkdwarfs-$ARCH-* | paste -sd "," -)
# DWARFSCK=$(ls -1 ./dwarfsck-$ARCH-* | paste -sd "," -)
DWARFSEXTRACT=$(ls -1 ./dwarfsextract-$ARCH-* | paste -sd "," -)
# DWARFS=$(ls -1 ./dwarfs-$ARCH-* | paste -sd "," -)
#############################################
# extract all datasets as TAR archive
#############################################
if [[ ",$BENCHMARKS," == *,extract,* ]]; then
for ds in $DATASETS; do
$HF --export-json=$OUT/extract-$ds.json --export-markdown $OUT/extract-$ds.md -w $NWARM -m $NFAST \
-L bin "$DWARFSEXTRACT" "{bin} -n $NPROC -s 2g -i datasets/$ds.dwarfs -o /dev/null -f gnutar"
done
fi
#############################################
# build filesystem images
#############################################
declare -A MKDWARFS_ARGS
MKDWARFS_ARGS[audio]="-C zstd:level=5 --categorize -C pcmaudio/waveform::flac:level=1"
MKDWARFS_ARGS[disk]="-C zstd:level=5 --categorize=incompressible --incompressible-fragments --incompressible-block-size=512k --order=revpath -B16 -C incompressible::null"
MKDWARFS_ARGS[perl]="-C zstd:level=5"
MKDWARFS_ARGS[video]="-C null -S 28 -B 3 -W 8 -w 0 --order=revpath"
if [[ ",$BENCHMARKS," == *,mkdwarfs,* ]]; then
for ds in $DATASETS; do
if [ ! -d tmp/$ds ]; then
mkdir -p tmp/$ds
echo "Extracting $ds dataset..."
./dwarfsextract-*-clang -n $NPROC -s 2g -i datasets/$ds.dwarfs -o tmp/$ds
fi
$HF --export-json=$OUT/mkdwarfs-$ds.json --export-markdown $OUT/mkdwarfs-$ds.md -w $NWARM -m $NSLOW \
-L bin "$MKDWARFS" "{bin} -i tmp/$ds -o /dev/null --force --no-progress --log-level=warn ${MKDWARFS_ARGS[$ds]}"
done
fi
# remove symlinks
for n in mkdwarfs dwarfs dwarfsck dwarfsextract; do
for l in $n-$ARCH-*; do
if [ -L $l ]; then
rm -f $l
fi
done
done