Лучший метод сжатия?

На самом деле в главном репозитории Ubuntu:

remmina: Installed: (none) Candidate: 1.0.0-1ubuntu6.1 Version table: 1.0.0-1ubuntu6.1 0 500 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main i386 Packages 1.0.0-1ubuntu5 0 500 http://us.archive.ubuntu.com/ubuntu/ precise/main i386 Packages

Я не уверен, где именно вы получили номер 9.99.1. Откуда вы получили эту информацию о версии?

1
задан 19 October 2015 в 12:31

2 ответа

Этот вопрос очень старый, но, возможно, кто-то находит это решение полезным:

Используйте rzip после tar. Сначала он сжимает большие блоки данных объемом 900 МБ с использованием метода словаря, а затем передает очищенные данные на bzip2. Это намного быстрее, чем другие сильные инструменты сжатия (bzip2, lzma), а некоторые файлы сжимаются даже лучше, чем bzip2 или lzma.

Да, gz - это инструмент сжатия по умолчанию в Linux. Это быстро, и, несмотря на свой возраст, он дает еще очень хорошие результаты в сжатии текстовых файлов, таких как исходный код. Другим стандартным инструментом является bzip2, хотя он намного медленнее.

Дополнение: lrzip новее и расширяет принцип rzip. Он даже поддерживает неограниченные размеры блоков и выбор методов сжатия (LZMA, Bzip2, Gzip, LZO, ZPAQ или none). Стандарт LZMA. Для резервного копирования или совместного использования большого количества данных с другими пользователями Linux / BSD это может пригодиться.

12
ответ дан 25 May 2018 в 02:44
  • 1
    Я думаю, вы имели в виду 900 kB блоков? 900 МБ будет немного большим ... – Byte Commander 12 August 2017 в 13:29
  • 2
    Это на самом деле 900 МБ. См. ru.wikipedia.org/wiki/Rzip – user258532 13 August 2017 в 20:38

Я выбираю LZMA. Он имеет наименьший байт накладных расходов и имеет сильную степень сжатия. Сравнение между ZIP и LZMA: я создал два файла seq.txt с PHP-кодом

$s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[$i%10].($i%10==9 ? "\n":""); file_put_contents('seq.txt', $str);

, который содержит повторяющиеся блоки с 0..9 цифрами ~ 1 Мб данных и rnd.txt с кодом PHP [ ! d1]

$s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[rand(0,9)].($i%10==9 ? "\n":""); file_put_contents('rnd.txt', $str);

, который содержит случайные блоки из 0..9 цифр ~ 1 Мб данных.

Результаты сжатия:

seq.txt, rnd.txt - 1100000 байты seq.txt.zip - 2502 байта rnd.txt.zip - 515957 bytes seq.txt.lzma - 257 bytes rnd.txt.lzma - 484939 bytes

Степень сжатия:

seq.txt, rnd.txt - 1100000 байт ZIP           -> "rnd.txt" -> 53.094% seq.txt.zip - 2502 байта LZMA   -> «rnd.txt» -> 55.914%

Таким образом, LZMA сжал последовательные данные на 0,2% эффективнее, чем ZIP и случайные данные на 2.8% эффективнее, чем ZIP.

Конечно, LZMA выигрывает!

1
ответ дан 25 May 2018 в 02:44

Другие вопросы по тегам:

Похожие вопросы: