История изменений
Исправление thegoldone, (текущая версия) :
Я почти уверен, что у Вас есть знание о том, что на любом нормальном носителе cat
отработает быстрее. Просто это знание ещё не подгрузилось, ввиду низкой скорости чтения.
#!/bin/bash
ls -alh
echo "Creating archives"
if [ ! -f test.zst ]; then
echo "compress ZSTD"
zstd test -o test.zst
fi
if [ ! -f test.zip ]; then
echo "compress ZIP"
zip test.zip test
fi
if [ ! -f test.gz ]; then
echo "compress GZ"
gzip -c test > test.gz
fi
if [ ! -f test.xz ]; then
echo "compress XZ"
xz -zk test
fi
if [ ! -f test.lz4 ]; then
echo "compress LZ4"
lz4 test
fi
if [ ! -f test.lzma ]; then
echo "compress LZMA"
lzma -k test
fi
ls -alh
echo "===== CAT"
hyperfine -m 5 "sh -c 'cat test > /tmp/test'"
echo "===== ZSTD"
hyperfine -m 5 "sh -c 'zstd -d test.zst -f -o /tmp/test 2> /dev/null'"
echo "===== ZIP"
hyperfine -m 5 "sh -c 'unzip -o test.zip -d /tmp/ > /dev/null'"
echo "===== GZ"
hyperfine -m 5 "sh -c 'gunzip test.gz -c > /tmp/test'"
echo "===== LZ4"
hyperfine -m 5 "sh -c 'lz4 -f -d test.lz4 /tmp/test 2> /dev/null'"
echo "===== LZMA"
hyperfine -m 5 "sh -c 'lzma -df test.lzma -c > /tmp/test'"
echo "===== XZ"
hyperfine -m 5 "sh -c 'xz -df test.xz -c > /tmp/test'"
rm -rf /tmp/test
$ ls -alh
итого 19G
drwxr-xr-x 1 user users 118 фев 12 08:29 .
drwxr-xr-x 1 user users 688 фев 12 07:00 ..
-rw-r--r-- 1 user users 1,1K фев 12 08:27 bench.sh
-rw-r--r-- 1 user users 5,2G фев 12 07:06 test
-rw-r--r-- 1 user users 2,6G фев 12 08:13 test.gz
-rw-r--r-- 1 user users 3,4G фев 12 07:06 test.lz4
-rw-r--r-- 1 user users 1,6G фев 12 07:06 test.lzma
-rw-r--r-- 1 user users 1,6G фев 12 07:06 test.xz
-rw-r--r-- 1 user users 2,6G фев 12 08:10 test.zip
-rw-r--r-- 1 user users 2,1G фев 12 07:06 test.zst
===== CAT
Benchmark 1: sh -c 'cat test > /tmp/test'
Time (mean ± σ): 1.257 s ± 0.078 s [User: 0.006 s, System: 1.247 s]
Range (min … max): 1.119 s … 1.299 s 5 runs
===== ZSTD
Benchmark 1: sh -c 'zstd -d test.zst -f -o /tmp/test 2> /dev/null'
Time (mean ± σ): 4.597 s ± 0.055 s [User: 3.442 s, System: 1.147 s]
Range (min … max): 4.546 s … 4.671 s 5 runs
===== ZIP
Benchmark 1: sh -c 'unzip -o test.zip -d /tmp/ > /dev/null'
Time (mean ± σ): 28.361 s ± 0.115 s [User: 27.162 s, System: 1.171 s]
Range (min … max): 28.179 s … 28.469 s 5 runs
===== GZ
Benchmark 1: sh -c 'gunzip test.gz -c > /tmp/test'
Time (mean ± σ): 26.184 s ± 0.358 s [User: 24.996 s, System: 1.161 s]
Range (min … max): 25.780 s … 26.598 s 5 runs
===== LZ4
Benchmark 1: sh -c 'lz4 -f -d test.lz4 /tmp/test 2> /dev/null'
Time (mean ± σ): 3.506 s ± 0.032 s [User: 2.228 s, System: 1.271 s]
Range (min … max): 3.462 s … 3.540 s 5 runs
===== LZMA
Benchmark 1: sh -c 'lzma -df test.lzma -c > /tmp/test'
Time (mean ± σ): 61.371 s ± 0.939 s [User: 60.062 s, System: 1.254 s]
Range (min … max): 60.630 s … 62.971 s 5 runs
===== XZ
Benchmark 1: sh -c 'xz -df test.xz -c > /tmp/test'
Time (mean ± σ): 53.321 s ± 0.616 s [User: 52.029 s, System: 1.248 s]
Range (min … max): 52.831 s … 54.351 s 5 runs
Итого, в фаворе cat
, zstd
и lz4
. Разумеется cat
уделывает всех.
Архив – блоб NVIDA CUDA. Вполне реальный и достаточно большой.
cc annulen
Исходная версия thegoldone, :
Я почти уверен, что у Вас есть знание о том, что на любом нормальном носителе cat
отработает быстрее. Просто это знание ещё не подгрузилось, ввиду низкой скорости чтения.
#!/bin/bash
ls -alh
echo "Creating archives"
if [ ! -f test.zst ]; then
echo "compress ZSTD"
zstd test -o test.zst
fi
if [ ! -f test.zip ]; then
echo "compress ZIP"
zip test.zip test
fi
if [ ! -f test.gz ]; then
echo "compress GZ"
gzip -c test > test.gz
fi
if [ ! -f test.xz ]; then
echo "compress XZ"
xz -zk test
fi
if [ ! -f test.lz4 ]; then
echo "compress LZ4"
lz4 test
fi
if [ ! -f test.lzma ]; then
echo "compress LZMA"
lzma -k test
fi
ls -alh
echo "===== CAT"
hyperfine -m 5 "sh -c 'cat test > /tmp/test'"
echo "===== ZSTD"
hyperfine -m 5 "sh -c 'zstd -d test.zst -f -o /tmp/test 2> /dev/null'"
echo "===== ZIP"
hyperfine -m 5 "sh -c 'unzip -o test.zip -d /tmp/ > /dev/null'"
echo "===== GZ"
hyperfine -m 5 "sh -c 'gunzip test.gz -c > /tmp/test'"
echo "===== LZ4"
hyperfine -m 5 "sh -c 'lz4 -f -d test.lz4 /tmp/test 2> /dev/null'"
echo "===== LZMA"
hyperfine -m 5 "sh -c 'lzma -df test.lzma -c > /tmp/test'"
echo "===== XZ"
hyperfine -m 5 "sh -c 'xz -df test.xz -c > /tmp/test'"
rm -rf /tmp/test
$ ls -alh
итого 19G
drwxr-xr-x 1 user users 118 фев 12 08:29 .
drwxr-xr-x 1 user users 688 фев 12 07:00 ..
-rw-r--r-- 1 user users 1,1K фев 12 08:27 bench.sh
-rw-r--r-- 1 user users 5,2G фев 12 07:06 test
-rw-r--r-- 1 user users 2,6G фев 12 08:13 test.gz
-rw-r--r-- 1 user users 3,4G фев 12 07:06 test.lz4
-rw-r--r-- 1 user users 1,6G фев 12 07:06 test.lzma
-rw-r--r-- 1 user users 1,6G фев 12 07:06 test.xz
-rw-r--r-- 1 user users 2,6G фев 12 08:10 test.zip
-rw-r--r-- 1 user users 2,1G фев 12 07:06 test.zst
===== CAT
Benchmark 1: sh -c 'cat test > /tmp/test'
Time (mean ± σ): 1.257 s ± 0.078 s [User: 0.006 s, System: 1.247 s]
Range (min … max): 1.119 s … 1.299 s 5 runs
===== ZSTD
Benchmark 1: sh -c 'zstd -d test.zst -f -o /tmp/test 2> /dev/null'
Time (mean ± σ): 4.597 s ± 0.055 s [User: 3.442 s, System: 1.147 s]
Range (min … max): 4.546 s … 4.671 s 5 runs
===== ZIP
Benchmark 1: sh -c 'unzip -o test.zip -d /tmp/ > /dev/null'
Time (mean ± σ): 28.361 s ± 0.115 s [User: 27.162 s, System: 1.171 s]
Range (min … max): 28.179 s … 28.469 s 5 runs
===== GZ
Benchmark 1: sh -c 'gunzip test.gz -c > /tmp/test'
Time (mean ± σ): 26.184 s ± 0.358 s [User: 24.996 s, System: 1.161 s]
Range (min … max): 25.780 s … 26.598 s 5 runs
===== LZ4
Benchmark 1: sh -c 'lz4 -f -d test.lz4 /tmp/test 2> /dev/null'
Time (mean ± σ): 3.506 s ± 0.032 s [User: 2.228 s, System: 1.271 s]
Range (min … max): 3.462 s … 3.540 s 5 runs
===== LZMA
Benchmark 1: sh -c 'lzma -df test.lzma -c > /tmp/test'
Time (mean ± σ): 61.371 s ± 0.939 s [User: 60.062 s, System: 1.254 s]
Range (min … max): 60.630 s … 62.971 s 5 runs
===== XZ
Benchmark 1: sh -c 'xz -df test.xz -c > /tmp/test'
Time (mean ± σ): 53.321 s ± 0.616 s [User: 52.029 s, System: 1.248 s]
Range (min … max): 52.831 s … 54.351 s 5 runs
Итого, в фаворе cat
, zstd
и lz4
. Разумеется cat
уделывает всех.
Архив – блоб NVIDA CUDA. Вполне реальный и достаточно большой.