LINUX.ORG.RU

История изменений

Исправление 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. Вполне реальный и достаточно большой.