mirror of
https://github.com/mhx/dwarfs.git
synced 2025-08-04 02:06:22 -04:00
87 lines
2.3 KiB
Bash
Executable File
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
|