mirror of
https://github.com/mhx/dwarfs.git
synced 2025-09-08 11:59:48 -04:00
chore: add benchmarking script
This commit is contained in:
parent
340c96fd56
commit
f0c6a58387
86
.maintainer-scripts/benchmark.sh
Executable file
86
.maintainer-scripts/benchmark.sh
Executable file
@ -0,0 +1,86 @@
|
||||
#!/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
|
Loading…
x
Reference in New Issue
Block a user