Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение

Сравнение степеней компрессии ZSTD, какую выбрать : Операционные системы и программное обеспечение

05.02.2025 7:11


06.12.2024 20:03
Давно интересовало, какой же выигрыш дает zstd с разными параметрами.
По скорости сжатия, наверное, лидер. У меня он больше ограничивается скоростью диска, если брать какие-то небольшие степени компрессии, давайте посмотрим, что будет при их увеличении, как это соотносится со сжатием. Меня давно уже убеждают, что высокие степени компрессии особой роли не играют, только тормозят.

Итак, имеется в системе
*** Zstandard CLI (64-bit) v1.5.6, by Yann Collet ***

Для тестов взял журнал системы на полгига и накидал простейший скрипт
Код:
#!/bin/bash

# Проверяем, существует ли файл text.txt
if [[ ! -f "text.txt" ]]; then
  echo "Файл text.txt не найден. Убедитесь, что он существует в текущей директории."
  exit 1
fi

# Цикл по уровням компрессии от 1 до 15
for level in {1..15}; do
  # Формируем имя выходного файла
  output_file="${level}text.txt.zst"

  # Архивируем файл с указанным уровнем компрессии
  time zstd -q -${level} text.txt -o "$output_file"

  # Проверяем результат команды
  if [[ $? -eq 0 ]]; then
    echo "Файл $output_file успешно создан с уровнем компрессии $level."
  else
    echo "Ошибка при создании $output_file с уровнем компрессии $level."
  fi
done

echo "Архивация завершена."
И результат его работы:
Код:
real	0m0,295s
user	0m0,333s
sys	0m0,090s
Файл 1text.txt.zst успешно создан с уровнем компрессии 1.

real	0m0,358s
user	0m0,387s
sys	0m0,115s
Файл 2text.txt.zst успешно создан с уровнем компрессии 2.

real	0m0,398s
user	0m0,437s
sys	0m0,113s
Файл 3text.txt.zst успешно создан с уровнем компрессии 3.

real	0m0,431s
user	0m0,471s
sys	0m0,114s
Файл 4text.txt.zst успешно создан с уровнем компрессии 4.

real	0m1,091s
user	0m1,137s
sys	0m0,106s
Файл 5text.txt.zst успешно создан с уровнем компрессии 5.

real	0m1,343s
user	0m1,396s
sys	0m0,125s
Файл 6text.txt.zst успешно создан с уровнем компрессии 6.

real	0m1,425s
user	0m1,466s
sys	0m0,122s
Файл 7text.txt.zst успешно создан с уровнем компрессии 7.

real	0m1,745s
user	0m1,781s
sys	0m0,118s
Файл 8text.txt.zst успешно создан с уровнем компрессии 8.

real	0m1,863s
user	0m1,905s
sys	0m0,116s
Файл 9text.txt.zst успешно создан с уровнем компрессии 9.

real	0m2,251s
user	0m2,283s
sys	0m0,126s
Файл 10text.txt.zst успешно создан с уровнем компрессии 10.

real	0m2,925s
user	0m2,952s
sys	0m0,133s
Файл 11text.txt.zst успешно создан с уровнем компрессии 11.

real	0m3,174s
user	0m3,189s
sys	0m0,131s
Файл 12text.txt.zst успешно создан с уровнем компрессии 12.

real	0m6,579s
user	0m6,596s
sys	0m0,135s
Файл 13text.txt.zst успешно создан с уровнем компрессии 13.

real	0m9,366s
user	0m9,368s
sys	0m0,144s
Файл 14text.txt.zst успешно создан с уровнем компрессии 14.

real	0m14,333s
user	0m14,225s
sys	0m0,211s
Файл 15text.txt.zst успешно создан с уровнем компрессии 15.
Архивация завершена.
Видим, что после 12 степени компрессор начинает уже ощутимо тормозить.
Код:
ls -lS *.zst
-rw-r--r-- 1 olegon olegon 12640527 дек  6 19:37 1text.txt.zst
-rw-r--r-- 1 olegon olegon 12478899 дек  6 19:37 2text.txt.zst
-rw-r--r-- 1 olegon olegon 12001222 дек  6 19:37 3text.txt.zst
-rw-r--r-- 1 olegon olegon 11988390 дек  6 19:37 4text.txt.zst
-rw-r--r-- 1 olegon olegon 10133546 дек  6 19:37 5text.txt.zst
-rw-r--r-- 1 olegon olegon  9504993 дек  6 19:37 6text.txt.zst
-rw-r--r-- 1 olegon olegon  9244327 дек  6 19:37 7text.txt.zst
-rw-r--r-- 1 olegon olegon  9077772 дек  6 19:37 8text.txt.zst
-rw-r--r-- 1 olegon olegon  8882004 дек  6 19:37 9text.txt.zst
-rw-r--r-- 1 olegon olegon  8707963 дек  6 19:37 10text.txt.zst
-rw-r--r-- 1 olegon olegon  8583645 дек  6 19:37 12text.txt.zst
-rw-r--r-- 1 olegon olegon  8583169 дек  6 19:37 11text.txt.zst
-rw-r--r-- 1 olegon olegon  8566222 дек  6 19:37 13text.txt.zst
-rw-r--r-- 1 olegon olegon  8364558 дек  6 19:37 14text.txt.zst
-rw-r--r-- 1 olegon olegon  8230907 дек  6 19:37 15text.txt.zst
Любопытно, что 11 степень сжала лучше, чем 12 :)
То есть, получилось, что если брать 6 степень компрессии вместо 15, то на 1Тб я потеряю 2609328128 байт (2Гб, кому лень считать) и потеряю 26624 секунд (больше 7 часов времени)... Для меня выбор очевиден...
Часовой пояс GMT +3, время: 07:11.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.