🔒 Repository is read-only – file editing is disabled.
1234567891011121314151617181920212223242526272829303132333435363738394041
#!/bin/bash
# Benchmark: jednowatkowe bzip2 vs wielowatkowe lbzip2/pbzip2.
set -u
D=/tmp/bzbench
rm -rf "$D"; mkdir -p "$D"; cd "$D"
tm() { # tm <etykieta> <polecenie...>
local label="$1"; shift
local s e
s=$(date +%s.%N)
"$@" >/dev/null 2>&1
e=$(date +%s.%N)
awk -v l="$label" -v a="$s" -v b="$e" 'BEGIN{printf " %-22s %6.1f s\n", l, b-a}'
}
echo "== rdzenie: $(nproc) =="
head -c 150000000 /dev/urandom > data.bin
echo " dane: $(stat -c%s data.bin) B"
tm "kompresja bzip2 -9" bzip2 -9 -kf data.bin
echo " archiwum: $(stat -c%s data.bin.bz2) B"
# rozgrzewka cache (pierwszy przebieg pomijamy w wynikach)
bzip2 -dc data.bin.bz2 > /dev/null
lbzip2 -dc data.bin.bz2 > /dev/null
echo "== DEKOMPRESJA (2. przebieg, dane w cache) =="
tm "bzip2 (1 rdzen)" sh -c 'bzip2 -dc data.bin.bz2 > /dev/null'
tm "lbzip2 (wielowatkowo)" sh -c 'lbzip2 -dc data.bin.bz2 > /dev/null'
tm "pbzip2 (wielowatkowo)" sh -c 'pbzip2 -dc data.bin.bz2 > /dev/null'
mkdir -p x1 x2
echo "== rozpakowanie tar =="
tm "tar -xjf" sh -c 'tar -xjf data.bin.bz2 -C x1'
rm -rf x2; mkdir -p x2
tm "tar -I lbzip2 -xf" sh -c 'tar -I lbzip2 -xf data.bin.bz2 -C x2'
echo " kontrola: oba drzewa identyczne?"
if cmp -s x1/data.bin x2/data.bin; then echo " TAK"; else echo " NIE (!)"; fi
cd /; rm -rf "$D"
echo "== koniec =="