14

Между xz, gzip и bzip2, какой алгоритм сжатия дает наименьший размер файла и самую высокую скорость при сжатии довольно больших тарболлов?

3 ответа3

12

В моем стресс-тесте я сжал 464 мегабайта данных, используя три перечисленных формата. Gzip вернул файл размером 364 МБ. Bzip2 вернул файл размером 315 МБ. Xz вернул файл размером 254 МБ. Я также сделал простой тест скорости:

Сжатие:

1: Gzip

2: Xz

3: Bzip2 (мой вентилятор дул довольно долго, пока это происходило, указывая на то, что мой Athlon II был довольно напряженным)

Декомпрессия:

1: Xz

2: Gzip

3: Bzip2

Обратите внимание, что все эти тесты были выполнены с использованием последней версии 7-Zip.

Xz - лучший формат для всестороннего сжатия, в то время как Gzip очень хорош для скорости. Bzip2 подходит для своей степени сжатия, хотя xz, вероятно, следует использовать вместо него.

3

Я сделал свой собственный тест для установочного образа Linux на 1.1GB vmdk:

rar    =260MB   comp= 85s   decomp= 5s
7z(p7z)=269MB   comp= 98s   decomp=15s
tar.xz =288MB   comp=400s   decomp=30s
tar.bz2=382MB   comp= 91s   decomp=70s
tar.gz =421MB   comp=181s   decomp= 5s

все уровни сжатия на макс., процессор Intel I7 3740QM, память 32 ГБ 1600, источник и место назначения на RAM-диске

Обычно я использую rar или 7z для архивирования обычных файлов, таких как документы.
а для архивирования системных файлов я использую .tar.gz или .tar.xz с помощью file-roller или tar с параметрами -z или -J вместе с --preserve для непосредственного сжатия с помощью tar и сохранения разрешений (также альтернативно .tar.7z или .tar.rar можно использовать)

обновление: поскольку tar сохраняет только обычные разрешения, но не ACL, в любом случае также можно использовать обычные разрешения .7z плюс резервное копирование и восстановление, а также ACL вручную через getfacl и sefacl, что представляется наилучшим вариантом как для архивирования файлов, так и для резервного копирования системных файлов, поскольку он будет заполнен Сохранять разрешения и ACL, имеет контрольную сумму, проверку целостности и возможность шифрования, только недостатком является то, что p7zip не везде доступен

1

Я думаю, что эта статья дает очень интересные результаты.

http://pokecraft.first-world.info/wiki/Quick_Benchmark:_Gzip_vs_Bzip2_vs_LZMA_vs_XZ_vs_LZ4_vs_LZO

Наиболее эффективными форматами являются xz и lzma, оба с переданным параметром -e.

Самым быстрым алгоритмом на сегодняшний день являются lzop и lz4, которые могут выдавать уровень сжатия не очень далеко от gzip за 1,3 секунды, тогда как gzip занимал 8,1 секунды. Степень сжатия составляет 2,8 для lz4 и 3,7 для gzip.

Вот несколько результатов, которые я извлек из этой статьи:

  • Gzip: 8,1 с при 3,7

  • lz4: 1,3 с при 2,8

  • xz: 32,2 с при 5,43

  • xz-e: 6m40 @ 7.063

  • xz: 4m51s @ 7.063

Так что если вам действительно нужна скорость, lz4 великолепен и по-прежнему обеспечивает степень сжатия 2,8.

Если вам отчаянно нужно сэкономить байт, xz при максимальном уровне сжатия (9) лучше всего справляется с текстовыми файлами, такими как исходный код ядра. Однако это очень долго и занимает много памяти.

Хорошим примером для минимизации влияния на время и пространство является gzip. Это тот, который я бы использовал для ежедневного ручного резервного копирования производственной среды.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .