Skip to content

Instantly share code, notes, and snippets.

@atoponce
Last active May 19, 2023 21:06
Show Gist options
  • Save atoponce/353f4b4520d95ad71d3896b8aa21e166 to your computer and use it in GitHub Desktop.
Save atoponce/353f4b4520d95ad71d3896b8aa21e166 to your computer and use it in GitHub Desktop.
Simple Compression Benchmarks
cantrbry.tar
cantrbry.tar.*.*
.*.swp

Simple Compression Benchmarks

This Gist looks at the following lossless compression utilities, all available as Debian packages:

brotli, bzip2, gzip, lbzip2, lz4, lzip, lzma, lzop, pbzip2, pigz, plzip, pxz, pzstd, xz, zstd

Benchmark

A simple Bash script compresses the Canterbury Corpus (provided) with every compression level for each of the algorithms, with the default level for each printed. It produces a Github-flavored Markdown table, such as results.md as shipped here from my workstation.

Even though it's a Markdown table, you can still process it with standard Unix utilities, as it's pipe-delimited. Something like printing the top-10 fastest compressors:

$ sort -t '|' -k 2 -nr results.md | head
pigz -0 | 258525433.154 | 2821476 | 85109679.301 |
lz4 -1 | 75650475.579 | 1229064 | 55192298.771 | default
lzop -3 | 71676886.832 | 1199867 | 16830860.795 | default
lzop -2 | 71558916.811 | 1199867 | 38213867.999 |
lzop -4 | 68617624.789 | 1199867 | 29681383.024 |
lzop -1 | 68561204.698 | 1210489 | 35648694.633 |
lzop -5 | 67990840.618 | 1199867 | 41306498.621 |
lzop -6 | 67616475.385 | 1199867 | 44747936.210 |
lz4 -2 | 61547959.238 | 1229064 | 77693145.754 |
pigz -1 | 42988502.188 | 866357 | 29336060.575 |

Printing the tightest compression results between brotli(1) and zstd(1):

$ grep -E '^(brotli|zstd)' results.md | sort -t '|' -k 3 -n | head  
brotli -11 | 53483.277 | 495859 | 9783745.946 | default
zstd --ultra -21 | 413327.544 | 516708 | 14872758.711 |
zstd --ultra -22 | 262693.526 | 516719 | 25229871.714 |
zstd -19 | 427172.435 | 516752 | 14235727.584 |
zstd --ultra -20 | 460621.272 | 516752 | 24879831.001 |
brotli -10 | 120502.209 | 518406 | 26550577.522 |
zstd -18 | 628484.580 | 518962 | 13812735.470 |
zstd -17 | 977636.888 | 525979 | 16590003.177 |
zstd -16 | 1083873.266 | 535615 | 26475770.306 |
brotli -9 | 1811053.437 | 587153 | 19998655.296 |

Et cetera. I'm sure you can figure out how to handle the headers separately, or format to your liking.

#!/bin/bash
declare -a utils
utils=(brotli bzip2 gzip lbzip2 lz4 lzip lzma lzop pbzip2 pigz plzip pxz pzstd xz zstd)
ret=0
for util in "${utils[@]}"; do
command -v "$util" &> /dev/random
if [[ $? -ne 0 ]]; then
echo "$util not installed."
ret=$(($ret|1))
fi
done
for cmd in bc date stat; do
command -v bc &> /dev/random
if [[ $? -ne 0 ]]; then
echo "$cmd not installed."
ret=$(($ret|1))
fi
done
if [[ $ret -ne 0 ]]; then
exit 1
fi
# http://corpus.canterbury.ac.nz/descriptions/#cantrbry
gzip -dfkq cantrbry.tar.gz
file="cantrbry.tar"
nproc=8
echo 'Algorithm | Comp. bytes/sec. | Comp. bytes | Decomp. bytes/sec. | Default?'
echo ':---:|:---:|:---:|:---:|:---:'
for util in "${utils[@]}"; do
case "$util" in
brotli)
ext="br"
for l in {0..11}; do
begin=$(date +'%s%N')
"$util" -q "$l" -c "$file" > "${file}.${l}.${ext}"
finish=$(date +'%s%N')
comp=$((${finish}-${begin}))
size=$(stat -c %s "${file}.${l}.${ext}")
begin=$(date +'%s%N')
"$util" -q "$l" -dc "${file}.${l}.${ext}" > "$file"
finish=$(date +'%s%N')
decomp=$((${finish}-${begin}))
compbps=$(echo "scale=3; 10^9*${size}/${comp}" | bc)
decompbps=$(echo "scale=3; 10^9*${size}/${decomp}" | bc)
if [[ "$l" -eq 11 ]]; then
echo "$util -$l | $compbps | $size | $decompbps | default"
else
echo "$util -$l | $compbps | $size | $decompbps |"
fi
rm "${file}.${l}.${ext}" &> /dev/random
done
;;
bzip2)
ext="bz2"
for l in {1..9}; do
begin=$(date +'%s%N')
"$util" -"$l" -c "$file" > "${file}.${l}.${ext}"
finish=$(date +'%s%N')
comp=$((${finish}-${begin}))
size=$(stat -c %s "${file}.${l}.${ext}")
begin=$(date +'%s%N')
"$util" -"$l" -dc "${file}.${l}".bz2 > "$file"
finish=$(date +'%s%N')
decomp=$((${finish}-${begin}))
compbps=$(echo "scale=3; 10^9*${size}/${comp}" | bc)
decompbps=$(echo "scale=3; 10^9*${size}/${decomp}" | bc)
if [[ "$l" -eq 9 ]]; then
echo "$util -$l | $compbps | $size | $decompbps | default"
else
echo "$util -$l | $compbps | $size | $decompbps |"
fi
rm "${file}.${l}.${ext}" &> /dev/random
done
;;
gzip)
ext="gz"
for l in {1..9}; do
begin=$(date +'%s%N')
"$util" -"$l" -c "$file" > "${file}.${l}.${ext}"
finish=$(date +'%s%N')
comp=$((${finish}-${begin}))
size=$(stat -c %s "${file}.${l}.${ext}")
begin=$(date +'%s%N')
"$util" -"$l" -dc "${file}.${l}.${ext}" > "$file"
finish=$(date +'%s%N')
decomp=$((${finish}-${begin}))
compbps=$(echo "scale=3; 10^9*${size}/${comp}" | bc)
decompbps=$(echo "scale=3; 10^9*${size}/${decomp}" | bc)
if [[ "$l" -eq 6 ]]; then
echo "$util -$l | $compbps | $size | $decompbps | default"
else
echo "$util -$l | $compbps | $size | $decompbps |"
fi
rm "${file}.${l}.${ext}" &> /dev/random
done
;;
lbzip2)
ext="lbz2"
for l in {1..9}; do
begin=$(date +'%s%N')
"$util" -"$l" -c "$file" > "${file}.${l}.${ext}"
finish=$(date +'%s%N')
comp=$((${finish}-${begin}))
size=$(stat -c %s "${file}.${l}.${ext}")
begin=$(date +'%s%N')
"$util" -"$l" -dc "${file}.${l}.${ext}" > "$file"
finish=$(date +'%s%N')
decomp=$((${finish}-${begin}))
compbps=$(echo "scale=3; 10^9*${size}/${comp}" | bc)
decompbps=$(echo "scale=3; 10^9*${size}/${decomp}" | bc)
if [[ "$l" -eq 9 ]]; then
echo "$util -$l | $compbps | $size | $decompbps | default"
else
echo "$util -$l | $compbps | $size | $decompbps |"
fi
rm "${file}.${l}.${ext}" &> /dev/random
done
;;
lzip)
ext="lz"
for l in {0..9}; do
begin=$(date +'%s%N')
"$util" -"$l" -c "$file" > "${file}.${l}.${ext}"
finish=$(date +'%s%N')
comp=$((${finish}-${begin}))
size=$(stat -c %s "${file}.${l}.${ext}")
begin=$(date +'%s%N')
"$util" -"$l" -dc "${file}.${l}.${ext}" > "$file"
finish=$(date +'%s%N')
decomp=$((${finish}-${begin}))
compbps=$(echo "scale=3; 10^9*${size}/${comp}" | bc)
decompbps=$(echo "scale=3; 10^9*${size}/${decomp}" | bc)
if [[ "$l" -eq 6 ]]; then
echo "$util -$l | $compbps | $size | $decompbps | default"
else
echo "$util -$l | $compbps | $size | $decompbps |"
fi
rm "${file}.${l}.${ext}" &> /dev/random
done
;;
lzma)
ext="lzma"
for l in {0..9}; do
begin=$(date +'%s%N')
"$util" -"$l" -c "$file" > "${file}.${l}.${ext}"
finish=$(date +'%s%N')
comp=$((${finish}-${begin}))
size=$(stat -c %s "${file}.${l}.${ext}")
begin=$(date +'%s%N')
"$util" -"$l" -dc "${file}.${l}.${ext}" > "$file"
finish=$(date +'%s%N')
decomp=$((${finish}-${begin}))
compbps=$(echo "scale=3; 10^9*${size}/${comp}" | bc)
decompbps=$(echo "scale=3; 10^9*${size}/${decomp}" | bc)
if [[ "$l" -eq 6 ]]; then
echo "$util -$l | $compbps | $size | $decompbps | default"
else
echo "$util -$l | $compbps | $size | $decompbps |"
fi
rm "${file}.${l}.${ext}" &> /dev/random
done
for l in {0..9}; do
begin=$(date +'%s%N')
"$util" -e -"$l" -c "$file" > "${file}.${l}.${ext}"
finish=$(date +'%s%N')
comp=$((${finish}-${begin}))
size=$(stat -c %s "${file}.${l}.${ext}")
begin=$(date +'%s%N')
"$util" -e -"$l" -dc "${file}.${l}.${ext}" > "$file"
finish=$(date +'%s%N')
decomp=$((${finish}-${begin}))
compbps=$(echo "scale=3; 10^9*${size}/${comp}" | bc)
decompbps=$(echo "scale=3; 10^9*${size}/${decomp}" | bc)
echo "$util -e -$l | $compbps | $size | $decompbps |"
rm "${file}.${l}.${ext}" &> /dev/random
done
;;
lz4)
ext="lz4"
for l in {1..12}; do
begin=$(date +'%s%N')
"$util" -"$l" -c "$file" > "${file}.${l}.${ext}"
finish=$(date +'%s%N')
comp=$((${finish}-${begin}))
size=$(stat -c %s "${file}.${l}.${ext}")
begin=$(date +'%s%N')
"$util" -"$l" -dc "${file}.${l}.${ext}" > "$file"
finish=$(date +'%s%N')
decomp=$((${finish}-${begin}))
compbps=$(echo "scale=3; 10^9*${size}/${comp}" | bc)
decompbps=$(echo "scale=3; 10^9*${size}/${decomp}" | bc)
if [[ "$l" -eq 1 ]]; then
echo "$util -$l | $compbps | $size | $decompbps | default"
else
echo "$util -$l | $compbps | $size | $decompbps |"
fi
rm "${file}.${l}.${ext}" &> /dev/random
done
;;
lzop)
ext="lzo"
for l in {1..9}; do
begin=$(date +'%s%N')
"$util" -"$l" -c "$file" > "${file}.${l}.${ext}"
finish=$(date +'%s%N')
comp=$((${finish}-${begin}))
size=$(stat -c %s "${file}.${l}.${ext}")
begin=$(date +'%s%N')
"$util" -"$l" -dc "${file}.${l}.${ext}" > "$file"
finish=$(date +'%s%N')
decomp=$((${finish}-${begin}))
compbps=$(echo "scale=3; 10^9*${size}/${comp}" | bc)
decompbps=$(echo "scale=3; 10^9*${size}/${decomp}" | bc)
if [[ "$l" -eq 3 ]]; then
echo "$util -$l | $compbps | $size | $decompbps | default"
else
echo "$util -$l | $compbps | $size | $decompbps |"
fi
rm "${file}.${l}.${ext}" &> /dev/random
done
;;
pbzip2)
ext="pbz2"
for l in {1..9}; do
begin=$(date +'%s%N')
"$util" -"$l" -c "$file" > "${file}.${l}.${ext}"
finish=$(date +'%s%N')
comp=$((${finish}-${begin}))
size=$(stat -c %s "${file}.${l}.${ext}")
begin=$(date +'%s%N')
"$util" -"$l" -dc "${file}.${l}.${ext}" > "$file"
finish=$(date +'%s%N')
decomp=$((${finish}-${begin}))
compbps=$(echo "scale=3; 10^9*${size}/${comp}" | bc)
decompbps=$(echo "scale=3; 10^9*${size}/${decomp}" | bc)
if [[ "$l" -eq 9 ]]; then
echo "$util -$l | $compbps | $size | $decompbps | default"
else
echo "$util -$l | $compbps | $size | $decompbps |"
fi
rm "${file}.${l}.${ext}" &> /dev/random
done
;;
pigz)
ext="pgz"
for l in {0..9}; do
begin=$(date +'%s%N')
"$util" -"$l" -c "$file" > "${file}.${l}.${ext}"
finish=$(date +'%s%N')
comp=$((${finish}-${begin}))
size=$(stat -c %s "${file}.${l}.${ext}")
begin=$(date +'%s%N')
"$util" -"$l" -dc "${file}.${l}.${ext}" > "$file"
finish=$(date +'%s%N')
decomp=$((${finish}-${begin}))
compbps=$(echo "scale=3; 10^9*${size}/${comp}" | bc)
decompbps=$(echo "scale=3; 10^9*${size}/${decomp}" | bc)
if [[ "$l" -eq 6 ]]; then
echo "$util -$l | $compbps | $size | $decompbps | default"
else
echo "$util -$l | $compbps | $size | $decompbps |"
fi
rm "${file}.${l}.${ext}" &> /dev/random
done
;;
plzip)
ext="plz"
for l in {0..9}; do
begin=$(date +'%s%N')
"$util" -"$l" -c "$file" > "${file}.${l}.${ext}"
finish=$(date +'%s%N')
comp=$((${finish}-${begin}))
size=$(stat -c %s "${file}.${l}.${ext}")
begin=$(date +'%s%N')
"$util" -"$l" -dc "${file}.${l}.${ext}" > "$file"
finish=$(date +'%s%N')
decomp=$((${finish}-${begin}))
compbps=$(echo "scale=3; 10^9*${size}/${comp}" | bc)
decompbps=$(echo "scale=3; 10^9*${size}/${decomp}" | bc)
if [[ "$l" -eq 6 ]]; then
echo "$util -$l | $compbps | $size | $decompbps | default"
else
echo "$util -$l | $compbps | $size | $decompbps |"
fi
rm "${file}.${l}.${ext}" &> /dev/random
done
;;
pxz)
ext="pxz"
for l in {0..9}; do
begin=$(date +'%s%N')
"$util" -"$l" -c "$file" > "${file}.${l}.${ext}"
finish=$(date +'%s%N')
comp=$((${finish}-${begin}))
size=$(stat -c %s "${file}.${l}.${ext}")
begin=$(date +'%s%N')
"$util" -"$l" -dc "${file}.${l}.${ext}" > "$file"
finish=$(date +'%s%N')
decomp=$((${finish}-${begin}))
compbps=$(echo "scale=3; 10^9*${size}/${comp}" | bc)
decompbps=$(echo "scale=3; 10^9*${size}/${decomp}" | bc)
if [[ "$l" -eq 6 ]]; then
echo "$util -$l | $compbps | $size | $decompbps | default"
else
echo "$util -$l | $compbps | $size | $decompbps |"
fi
rm "${file}.${l}.${ext}" &> /dev/random
done
for l in {0..9}; do
begin=$(date +'%s%N')
"$util" -e -"$l" -c "$file" > "${file}.${l}.${ext}"
finish=$(date +'%s%N')
comp=$((${finish}-${begin}))
size=$(stat -c %s "${file}.${l}.${ext}")
begin=$(date +'%s%N')
"$util" -e -"$l" -dc "${file}.${l}.${ext}" > "$file"
finish=$(date +'%s%N')
decomp=$((${finish}-${begin}))
compbps=$(echo "scale=3; 10^9*${size}/${comp}" | bc)
decompbps=$(echo "scale=3; 10^9*${size}/${decomp}" | bc)
echo "$util -e -$l | $compbps | $size | $decompbps |"
rm "${file}.${l}.${ext}" &> /dev/random
done
;;
pzstd)
ext="pzst"
for l in {1..22}; do
begin=$(date +'%s%N')
if [[ "$l" -lt 20 ]]; then
"$util" -"$l" -qc "$file" > "${file}.${l}.${ext}"
else
"$util" --ultra -"$l" -qc "$file" > "${file}.${l}.${ext}"
fi
finish=$(date +'%s%N')
comp=$((${finish}-${begin}))
size=$(stat -c %s "${file}.${l}.${ext}")
begin=$(date +'%s%N')
if [[ "$l" -lt 20 ]]; then
"$util" -"$l" -qdc "${file}.${l}.${ext}" > "$file"
else
"$util" --ultra -"$l" -qdc "${file}.${l}.${ext}" > "$file"
fi
finish=$(date +'%s%N')
decomp=$((${finish}-${begin}))
compbps=$(echo "scale=3; 10^9*${size}/${comp}" | bc)
decompbps=$(echo "scale=3; 10^9*${size}/${decomp}" | bc)
if [[ "$l" -eq "$nproc" ]]; then
echo "$util -$l | $compbps | $size | $decompbps | default"
elif [[ "$l" -gt 19 ]]; then
echo "$util --ultra -$l | $compbps | $size | $decompbps |"
else
echo "$util -$l | $compbps | $size | $decompbps |"
fi
rm "${file}.${l}.${ext}" &> /dev/random
done
;;
xz)
ext="xz"
for l in {0..9}; do
begin=$(date +'%s%N')
"$util" -"$l" -c "$file" > "${file}.${l}.${ext}"
finish=$(date +'%s%N')
comp=$((${finish}-${begin}))
size=$(stat -c %s "${file}.${l}.${ext}")
begin=$(date +'%s%N')
"$util" -"$l" -dc "${file}.${l}.${ext}" > "$file"
finish=$(date +'%s%N')
decomp=$((${finish}-${begin}))
compbps=$(echo "scale=3; 10^9*${size}/${comp}" | bc)
decompbps=$(echo "scale=3; 10^9*${size}/${decomp}" | bc)
if [[ "$l" -eq 6 ]]; then
echo "$util -$l | $compbps | $size | $decompbps | default"
else
echo "$util -$l | $compbps | $size | $decompbps |"
fi
rm "${file}.${l}.${ext}" &> /dev/random
done
for l in {0..9}; do
begin=$(date +'%s%N')
"$util" -e -"$l" -c "$file" > "${file}.${l}.${ext}"
finish=$(date +'%s%N')
comp=$((${finish}-${begin}))
size=$(stat -c %s "${file}.${l}.${ext}")
begin=$(date +'%s%N')
"$util" -e -"$l" -dc "${file}.${l}.${ext}" > "$file"
finish=$(date +'%s%N')
decomp=$((${finish}-${begin}))
compbps=$(echo "scale=3; 10^9*${size}/${comp}" | bc)
decompbps=$(echo "scale=3; 10^9*${size}/${decomp}" | bc)
echo "$util -e -$l | $compbps | $size | $decompbps |"
rm "${file}.${l}.${ext}" &> /dev/random
done
;;
zstd)
ext="zst"
for l in {0..22}; do
begin=$(date +'%s%N')
if [[ "$l" -lt 20 ]]; then
"$util" -"$l" -qc "$file" > "${file}.${l}.${ext}"
else
"$util" --ultra -"$l" -qc "$file" > "${file}.${l}.${ext}"
fi
finish=$(date +'%s%N')
comp=$((${finish}-${begin}))
size=$(stat -c %s "${file}.${l}.${ext}")
begin=$(date +'%s%N')
if [[ "$l" -lt 20 ]]; then
"$util" -"$l" -qdc "${file}.${l}.${ext}" > "$file"
else
"$util" --ultra -"$l" -qdc "${file}.${l}.${ext}" > "$file"
fi
finish=$(date +'%s%N')
decomp=$((${finish}-${begin}))
compbps=$(echo "scale=3; 10^9*${size}/${comp}" | bc)
decompbps=$(echo "scale=3; 10^9*${size}/${decomp}" | bc)
if [[ "$l" -eq 3 ]]; then
echo "$util -$l | $compbps | $size | $decompbps | default"
elif [[ "$l" -gt 19 ]]; then
echo "$util --ultra -$l | $compbps | $size | $decompbps |"
else
echo "$util -$l | $compbps | $size | $decompbps |"
fi
rm "${file}.${l}.${ext}" &> /dev/random
done
;;
esac
done
Algorithm Comp. bytes/sec. Comp. bytes Decomp. bytes/sec. Default?
brotli -0 42525623.161 846665 18639363.555
brotli -1 27743124.798 750828 20132239.318
brotli -2 14861286.043 666032 15397168.684
brotli -3 13076200.418 667286 34211101.743
brotli -4 6030529.727 598832 30460359.725
brotli -5 3790942.605 600497 29044853.410
brotli -6 3015397.760 594071 27685405.737
brotli -7 2449122.455 590603 26733355.775
brotli -8 2153205.869 588271 27840031.423
brotli -9 1811053.437 587153 19998655.296
brotli -10 120502.209 518406 26550577.522
brotli -11 53483.277 495859 9783745.946 default
bzip2 -1 2773212.007 584964 5027657.124
bzip2 -2 2692912.705 572306 6146071.812
bzip2 -3 2750474.686 564947 5758646.685
bzip2 -4 2652870.739 566661 6236081.271
bzip2 -5 2633621.331 569402 5255272.342
bzip2 -6 2649524.910 559139 5744808.854
bzip2 -7 2702710.657 571189 5866505.627
bzip2 -8 2558766.711 569406 5835549.491
bzip2 -9 2544577.103 570856 5915145.755 default
gzip -1 17149103.955 872568 29328136.848
gzip -2 15007456.484 841649 29057107.563
gzip -3 11881598.143 813271 34079663.939
gzip -4 11128065.265 789786 29382949.357
gzip -5 7149492.596 750049 10021142.025
gzip -6 5345690.863 739064 29968803.919 default
gzip -7 4413673.818 740960 26509497.763
gzip -8 1923741.323 736799 33853591.014
gzip -9 1092794.719 736221 31198742.525
lbzip2 -1 14188885.884 582455 32158851.048
lbzip2 -2 12479163.388 569140 24700620.957
lbzip2 -3 12451645.615 559446 24619983.903
lbzip2 -4 11436986.763 567530 22919152.893
lbzip2 -5 10212529.226 566802 19721538.976
lbzip2 -6 9824726.279 552900 19181941.040
lbzip2 -7 6823916.508 571759 15338149.020
lbzip2 -8 6802582.930 564393 14492693.706
lbzip2 -9 7839086.900 561033 16551658.582 default
lz4 -1 75650475.579 1229064 55192298.771 default
lz4 -2 61547959.238 1229064 77693145.754
lz4 -3 17458602.436 980412 121142611.429
lz4 -4 12698553.557 959607 95460933.375
lz4 -5 9167394.649 947582 88368668.105
lz4 -6 7170755.790 942095 65558163.468
lz4 -7 5506338.484 939622 81099173.612
lz4 -8 4184847.164 938254 70885172.026
lz4 -9 3539506.570 937421 12233745.808
lz4 -10 4085128.236 934451 75554051.672
lz4 -11 1897153.452 931625 32532244.242
lz4 -12 557981.736 930645 77420560.828
lzip -0 7653724.852 591221 16395378.819
lzip -1 2953773.694 585234 10929672.446
lzip -2 1754986.142 554104 6302717.196
lzip -3 738401.534 519202 7021951.710
lzip -4 662861.625 498387 8795445.238
lzip -5 381100.358 488380 4784076.640
lzip -6 350391.448 486875 8484556.373 default
lzip -7 336169.068 484132 7907605.161
lzip -8 283456.235 482663 5757486.961
lzip -9 216531.107 481413 5395579.196
lzma -0 3442434.628 617018 10743550.214
lzma -1 2495734.496 568422 6030700.125
lzma -2 1677103.707 554302 6412207.559
lzma -3 1246543.172 549928 8712624.522
lzma -4 442987.048 491251 6973604.877
lzma -5 403623.779 487290 7646316.236
lzma -6 373788.818 485928 6024627.715 default
lzma -7 382003.766 485998 7386470.656
lzma -8 370987.157 485998 10485060.754
lzma -9 358905.251 485998 5781920.251
lzma -e -0 243300.024 489760 7447328.882
lzma -e -1 205079.759 488004 8951794.869
lzma -e -2 206048.730 485696 6231993.534
lzma -e -3 276136.458 482843 10504767.201
lzma -e -4 195524.988 485713 7539253.866
lzma -e -5 275460.051 482843 8939614.192
lzma -e -6 188395.778 485713 5804664.303
lzma -e -7 199516.583 485713 5230885.223
lzma -e -8 189621.081 485713 6737669.005
lzma -e -9 190734.457 485713 6448051.574
lzop -1 68561204.698 1210489 35648694.633
lzop -2 71558916.811 1199867 38213867.999
lzop -3 71676886.832 1199867 16830860.795 default
lzop -4 68617624.789 1199867 29681383.024
lzop -5 67990840.618 1199867 41306498.621
lzop -6 67616475.385 1199867 44747936.210
lzop -7 3306260.512 944068 63814210.198
lzop -8 817155.381 931435 41422010.341
lzop -9 564826.128 930815 17975648.949
pbzip2 -1 6780922.787 582374 5603930.478
pbzip2 -2 6776409.138 568388 5711604.987
pbzip2 -3 5254845.293 559157 5777099.708
pbzip2 -4 6071586.016 556204 5545545.772
pbzip2 -5 4719549.057 555145 5375965.633
pbzip2 -6 6502934.219 563562 5257088.445
pbzip2 -7 6312213.249 568372 4890454.951
pbzip2 -8 4660333.477 567199 5766975.664
pbzip2 -9 5147798.934 566224 5238312.969 default
pigz -0 258525433.154 2821476 85109679.301
pigz -1 42988502.188 866357 29336060.575
pigz -2 36702810.286 828584 32441309.304
pigz -3 34768285.974 798307 31718201.173
pigz -4 13211359.636 778314 40768480.680
pigz -5 22648861.561 745095 46669044.292
pigz -6 16076847.741 733735 49839728.458 default
pigz -7 15710142.392 734746 48010661.920
pigz -8 7557754.683 731108 40902323.009
pigz -9 4899633.573 730418 37085585.522
plzip -0 7759443.026 591221 14882354.159
plzip -1 2872114.338 585234 11388408.853
plzip -2 1761795.524 554104 6815423.789
plzip -3 1025264.221 519202 6094622.285
plzip -4 748820.975 498387 6132511.476
plzip -5 387822.836 488380 6969913.018
plzip -6 374338.978 486875 6215975.553 default
plzip -7 346005.675 484132 6681689.744
plzip -8 289816.263 482663 8323326.583
plzip -9 186121.237 481413 7403909.644
pxz -0 4971483.209 620380 9976036.158
pxz -1 1890441.438 568556 6376223.472
pxz -2 1295433.339 554440 7039872.694
pxz -3 999294.520 550056 8530873.780
pxz -4 385759.994 491368 8741137.325
pxz -5 384031.261 487408 6283474.438
pxz -6 340652.971 486044 9582811.994 default
pxz -7 338309.057 486116 6850823.693
pxz -8 365393.368 486116 7341208.882
pxz -9 326228.776 486116 7190535.052
pxz -e -0 5765777.996 620380 10255423.320
pxz -e -1 2400047.032 568556 9022830.829
pxz -e -2 1488180.726 554440 4130440.263
pxz -e -3 968657.794 550056 9378046.169
pxz -e -4 425645.825 491368 7008095.833
pxz -e -5 349227.230 487408 8691484.435
pxz -e -6 335340.433 486044 6248499.644
pxz -e -7 367672.277 486116 6492868.237
pxz -e -8 352305.931 486116 5875458.780
pxz -e -9 367108.377 486116 7333627.221
pzstd -1 31846727.227 704042 12040225.292
pzstd -2 23439475.464 664086 23000373.084
pzstd -3 19635697.130 642542 36420670.987
pzstd -4 18030308.692 640216 42218442.601
pzstd -5 10733909.728 632807 35969946.328
pzstd -6 8543048.021 624604 45073568.454
pzstd -7 5337407.377 607160 35223346.216
pzstd -8 5309200.929 604753 36711908.950 default
pzstd -9 3854609.902 601183 39274149.810
pzstd -10 4198468.666 601296 34861324.289
pzstd -11 3714335.849 600880 33282968.711
pzstd -12 2608659.474 598808 35916624.640
pzstd -13 2146727.317 594680 31752742.523
pzstd -14 2076904.480 593634 36372613.138
pzstd -15 1744451.169 593608 38070698.437
pzstd -16 1082814.737 535624 27700993.482
pzstd -17 930018.822 525988 14993613.031
pzstd -18 620584.566 518971 31801108.309
pzstd -19 370972.501 516761 16262896.981
pzstd --ultra -20 341784.576 516761 29659149.444
pzstd --ultra -21 349750.822 516717 31316386.798
pzstd --ultra -22 193729.373 516728 20495027.855
xz -0 3170599.321 617164 8496348.635
xz -1 1817745.561 568556 10508069.744
xz -2 1353425.533 554440 7088727.848
xz -3 905984.616 550056 6717762.465
xz -4 378145.090 491368 6529884.192
xz -5 389045.742 487408 6366740.630
xz -6 358627.187 486044 9554301.141 default
xz -7 378648.049 486116 9024134.784
xz -8 330858.747 486116 8851595.620
xz -9 354733.657 486116 7053997.977
xz -e -0 221528.082 489876 6981495.820
xz -e -1 177470.460 488120 8635337.662
xz -e -2 176914.134 485812 8004947.587
xz -e -3 257627.596 482960 6402760.154
xz -e -4 193201.039 485832 7647537.418
xz -e -5 285225.571 482960 6877240.530
xz -e -6 196028.275 485832 7337312.901
xz -e -7 203357.362 485832 9462377.955
xz -e -8 206378.137 485832 7321010.704
xz -e -9 203920.900 485832 8170510.312
zstd -0 19165292.331 642534 54271149.995
zstd -1 36268595.227 701641 7506509.719
zstd -2 25575804.377 661066 21466170.355
zstd -3 20062103.365 642534 31692373.452 default
zstd -4 18404978.700 640208 44845463.008
zstd -5 9273096.839 632797 45276373.934
zstd -6 9498767.235 624592 37172851.210
zstd -7 6540150.769 607153 36096674.758
zstd -8 5638374.203 604744 34815001.980
zstd -9 4348387.693 601175 42484196.380
zstd -10 4279621.344 601287 33404788.793
zstd -11 3959751.979 600871 34806013.291
zstd -12 2513726.541 598799 33963751.065
zstd -13 2167685.380 594671 35854170.654
zstd -14 2127588.038 593625 33883827.204
zstd -15 1876199.631 593599 37899319.420
zstd -16 1083873.266 535615 26475770.306
zstd -17 977636.888 525979 16590003.177
zstd -18 628484.580 518962 13812735.470
zstd -19 427172.435 516752 14235727.584
zstd --ultra -20 460621.272 516752 24879831.001
zstd --ultra -21 413327.544 516708 14872758.711
zstd --ultra -22 262693.526 516719 25229871.714
@cslycord
Copy link

for cmd in bc date stat; do command -v bc &> /dev/random if [[ $? -ne 0 ]]; then echo "$cmd not installed." ret=$(($ret|1)) fi done

I believe you meant that to be command -v $cmd. As it is, you loop over bc, date, and stat and check for the existence of bc each time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment