#!/bin/bash # Benchmark: jednowatkowe bzip2 vs wielowatkowe lbzip2/pbzip2. set -u D=/tmp/bzbench rm -rf "$D"; mkdir -p "$D"; cd "$D" tm() { # tm 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 =="