Між xz, gzip та bzip2, який алгоритм стиснення є найбільш ефективним?


16

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


'кращий' як у ', що призводить до найменшого розміру файлів'?
Геннес

Я не знаю, я намагався знайти щось, щоб сформулювати питання, щоб я міг додати тест як відповідь. Я також не маю уявлення, чому цю справу закрили. @Karan
Nathan2055

1
О, чому його закрили легко. "Кращий" є високо суб'єктивним і, як правило, веде до дискусій або неконструктивних відповідей. Найкраще стиснення може бути найменшим розміром файлу, найшвидшим стисненням, найменшою потужністю, що використовується для стиснення (наприклад, на ноутбуці), найменшим впливом на систему під час стискання (наприклад, старовинні однократні програми, що використовують лише одне з ядер), ... або комбінація усіх цих.
Геннес

Цікавою статтею для читання є tomshardware.com/reviews/winrar-winzip-7-zip-magicrar,3436.html (на базі Windows та фокусування на 7zip, magicRAR, WinRAR та WinZip, а не на xz, gz чи bz, але все ж цікаво та надання довідкової інформації).
Хеннес

@Hennes - Я прибрав пост, щоб замінити найкраще саме те, що досліджував. Також дякую за згадану вами статтю, я прочитаю її пізніше сьогодні.
Nathan2055

Відповіді:


15

У своєму стрес-тесті я стиснув 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 замість нього.


2
Хороші дослідження. Ви спробували різні варіанти рівня стиснення, запропоновані (принаймні) bzip2, наприклад bzip2 -9 <file>?
Аарон Міллер

@AaronMiller - Ні, чи можна використовувати їх через 7-Zip?
Nathan2055

Це виглядає так, хоча я не впевнений у якій мірі: див. Dotnetperls.com/7-zip-examples , розділ "Переключити m".
Аарон Міллер

7
З цікавості, які дані були тестовим файлом?
GeminiDomino

Зауважте, що різні типи даних призводять до різного розміру стиснення. Дивіться тут приклади.
Плоні

4

Я зробив власний орієнтир щодо встановлення зображення vmdk 1.1GB Linux:

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

всі рівні стиснення на max, процесор Intel I7 3740QM, пам'ять 32 ГБ 1600, джерело та призначення на диску оперативної пам'яті

Я зазвичай використовую rar або 7z для архівації звичайних файлів, таких як документи.
а для архівації системних файлів я використовую .tar.gz або .tar.xz за допомогою файлового ролика або tar з параметрами -z або -J разом із --затримувати натискання натисканням та зберегти дозволи (також альтернативно .tar.7z або .tar.rar можна використовувати)

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


Студент, які були варіанти рару? Чому б не спробувати lrzip by kolivas , це повинно працювати добре для зображень віртуальних дисків.
osgx

Я переходжу з RAR на Git та tarballs для своїх текстових файлів та btrfs для всього іншого; моя причина використання RAR - це не продуктивність, я використовую її через такі функції, як запис відновлення, окрема 256-бітна контрольна сума на рівні файлів для кожного файлу та ...
Судер

3

Я думаю, що ця стаття дає дуже цікаві результати.

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,1s @ 3,7

  • lz4: 1,3s @ 2,8

  • xz: 32,2s @ 5,43

  • xz -e: 6m40 @ 7.063

  • xz: 4m51s @ 7.063

Тож якщо вам справді відчайдушно потрібна швидкість, lz4 є приголомшливим і все ще забезпечує коефіцієнт стиснення 2,8.

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

Хороший варіант, коли потрібно мінімізувати вплив на час І на простір - gzip. Це те, що я використовував би для створення щоденних резервних копій виробничого середовища.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.