Найвища компресія для файлів (для веб-передачі)?


15

Я бачив кілька сильно стислих файлів навколо, таких як 700 Мб даних, стислих до приблизно 30-50 МБ.

Але як ви отримуєте такі стислі файли? Я намагався використовувати таке програмне забезпечення, як WinRAR і 7Zip, але ніколи не досягав такої високої компресії.

Які методи / програмне забезпечення дозволяють вам так добре стискати файли?

(PS Я використовую Windows XP)


Хороша ідея ... але звідки ти взагалі береш такі файли?
Робінікс

3
Я бачив 7zip стискання файлів журналів сервера (головним чином текст) до приблизно 1% від їх початкового розміру.
Umber Ferrule

2
Відкрийте блокнот. Тип 1 мільярд разів "А". Збережіть, потім стисніть. ОЦЕ ТАК! Створіть додаток, який записує у файл 1 мільярд (справжніх) випадкових чисел. Стисніть це. HUH?
igrimpe

igrimpe: багато показників алгоритмів стиснення. Мільярд A - це A мільярд разів. Ви можете стиснути це до [A] {1, 1000000000}. Якщо у вас мільярд випадкових чисел, складно виконати відповідність шаблонів, оскільки кожне підряд число в заданому підмножині зменшує ймовірність відповідного підмножини експоненціально.
AaronF

Відповіді:


11

Якщо час для стискання даних не викликає проблем, то ви можете оптимізувати стислий розмір, використовуючи разом декілька різних інструментів.

Стисніть дані кілька разів за допомогою різних інструментів, таких як 7zip, winrar (для zip) та bjwflate.

(Зверніть увагу, що це не означає стиснення zip-файлів знову і знову, а скоріше створити ряд альтернативних zip-файлів за допомогою різних інструментів)

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

Нарешті, запустіть zipmix про колекцію архівів. Оскільки різні інструменти zip краще для різних файлів, zipmix вибирає найкращу стиснуту версію кожного файлу з кожного з архівів і видає вихід, менший за будь-який, який можна було отримати будь-який із інструментів zip окремо.

Однак ви повинні зауважити, що це не гарантує жодної магії на ваші файли. Деякі типи даних просто не дуже добре стискаються, як JPEG та MP3. Ці файли вже стиснуті внутрішньо.


4
JPEG та MP3 не зафіксовані. Вони стиснуті, але не на блискавці.
KovBal

Це неймовірно погана порада, намагатися послідовно використовувати кілька алгоритмів стиснення - дуже погана ідея. Кожен алгоритм створює стислий файл + накладні витрати, тож використовуючи декілька, ви насправді додаєте дані до даних, які намагаєтесь стиснути - це як намагатися викопати яму в піску, чим глибше ви заглибите більше піску ти. Вам набагато краще використовувати один хороший алгоритм при максимальних налаштуваннях стиснення.
Такрой

Я думаю, ви неправильно розумієте .. одні і ті ж дані повторно не друкуються. Ви скоріше просто вибираєте найкращий єдиний алгоритм на основі файлу, а не за архівом.
izb

6
Стиснення даних кілька разів досить вводить в оману.
ta.speot.is

12

Це повністю залежить від стиснення даних.

Текст стискає дуже добре, двійкові формати не так добре, а дані стиснуті (mp3, jpg, mpeg) зовсім.

Ось хороша таблиця порівняння стиснення з Вікіпедії.


Мені відомо, що стиснення залежить від типу даних, але чи існують якісь конкретні методи, які допоможуть вам додатково стискати файли?
rzlines

3
Після того, як ви щось стиснули, зазвичай його неможливо помітити менше. Вам просто потрібно вибрати відповідний метод стиснення для своїх даних.
Ніфле

Текст легко стискається до 90%.
Георг Шоллі

@ GeorgSchölly: Це чудово. Оскільки я можу перетворити будь-які дані в текст, наприклад, перетворити кожен двійковий байт у дві шістнадцяткові цифри, що відображаються у тексті. Це подвоїло б мій розмір, але тоді заощадження 90% подвоєного розміру призводить до загальної економії в 80%. (Або я можу використовувати base64 для трохи більшої ефективності перетворення бінарного тексту в текст.) Це надзвичайно чудова новина! :)
TOOGAM

9

Попередні відповіді неправильні на порядок!

Найкращий алгоритм стиснення, з яким я маю особистий досвід, - це paq8o10t (див. Сторінку zpaq та PDF ).

Підказка: команда для стиснення files_or_folders була б така:

paq8o10t -5 archive files_or_folders

Розмір архіву та час для стиснення та вилучення 10 Гб (79,431 файлів) на зовнішній жорсткий диск USB за замовчуванням та максимальні настройки на ноутбуці Dell Latitude E6510 (Core i7 M620, 2 + 2 гіперпотоки, 2,66 ГГц, 4 ГБ, Ubuntu Linux , Вино 1.6).  Дані з 10 Гб бенчмарк (система 4).

Джерело: Утиліта резервного копіювання журналу та архіватор

Ви можете знайти дзеркало вихідного коду на GitHub .


Трохи кращий алгоритм стиснення та переможець Хаттер- премії - розпаювання8 (див. Посилання на сторінці призів). Однак не існує програми компресорів, якою можна реально користуватися.


Для дійсно великих файлів lrzip може досягти коефіцієнтів стиснення, які є просто комічними .

Приклад з README.benchmarks:


Візьмемо шість дерев ядра в одній версії, крім тарболу, linux-2.6.31 до linux-2.6.36. Вони покажуть багато зайвої інформації, але сотні мегабайт, окрім lrzip, буде дуже добре стискати. Для простоти буде порівняно лише 7z, оскільки це на сьогоднішній день найкращий компресор загального призначення:

Це орієнтири, виконані на двоядерному процесорі Intel Core2 2,53 ГГц з 4 Гб оперативної пам’яті за допомогою lrzip v0.5.1. Зауважте, що він працює з 32-бітовим простором користувачів, тому можливе лише 2 Гб адресація. Однак тест запускався з параметром -U, що дозволяє розглядати весь файл як одне велике вікно стиснення.

Тарбол з 6 дерев підряд ядер.

Compression    Size                 Percentage      Compress    Decompress
None           2373713920           100             [n/a]       [n/a]
7z             344088002            14.5            17m26s      1m22s
lrzip          104874109            4.4             11m37s      56s
lrzip -l       223130711            9.4             05m21s      1m01s
lrzip -U       73356070             3.1             08m53s      43s
lrzip -Ul      158851141            6.7             04m31s      35s
lrzip -Uz      62614573             2.6             24m42s      25m30s

Він оптимізований для забезпечення максимального коефіцієнта стиснення, але він набагато повільніше, ніж близькі суперники.
Ерік Дж.

2
@Eric J. так, але в питанні не було вказано швидкості стиснення / декомпресії;)
Олександр Річчо

3

Squeezechart.com містить порівняння різних швидкостей стиснення. Хоча, як зазначається у відповіді Ніфля, ви навряд чи отримаєте такі високі показники стиснення для бінарних форматів.


3

Просто перевірте підсумок тестів з декількома тестами на стиснення файлів, який має найкращий список стиснення, який складається з повного показника стиснення.

Топ-30

введіть тут опис зображення

Кращі виконавці (на основі стиснення) у цьому тесті - PAQ8 та WinRK (PWCM). Вони здатні стиснути тестовий набір 300+ Мб до 62 Мб (зменшення розміру на 80%), але для тестування знадобиться мінімум 8,5 годин. Програмі номер один (PAQ8P) потрібно майже 12 годин, а номер чотири (PAQAR) навіть 17 годин, щоб пройти тест. WinRK, програма з другою кращою компресією (79,7%) займає близько 8,5 годин. Не дивно, що всі згадані програми використовують для стиснення двигун PAQ (-подобний). Якщо у вас є файли із вбудованими зображеннями (наприклад, файли Word DOC), використовуйте PAQ8, він розпізнає їх та окремо стискає їх, значно збільшуючи стиснення. Всі згадані програми (крім WinRK) безкоштовні.


2

Більшість інструментів стиснення мають налаштування, що дозволяють досягти більш високої швидкості стиснення при компромісі уповільнення часу стиснення / декомпресії та більшого використання оперативної пам’яті.

Для 7-Zip шукайте "Додати до діалогового вікна архіву" у вбудованій довідці для отримання більш детальної інформації.


2

Ви можете спробувати 7zip з такими ультра-налаштуваннями:

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on big_file.mysql.7z big_file.mysql

1

Ваша найкраща ставка тут, схоже, спроба та помилка. Спробуйте всі наявні методи стиснення на кожному файлі та виберіть найкраще розмістити на своєму веб-сайті. На щастя комп'ютери роблять подібні речі досить швидко і не нудьгують. Ви можете написати простий сценарій для автоматизації процесу, щоб він був "відносно безболісним".

Просто не чекайте чудес - від 700 до 30 мбіт просто не трапляється так часто. Файли журналів, як згадувалося вище - так. "Ваш середній файл" - ніяк.


1

Nanozip, схоже, має найбільшу компресію разом із FreeArc. Але це ще не в остаточній версії. Існує як хороша компресія Nanozip . Він має дуже високу компресію, і це не займає занадто багато часу, перевірте підсумок тестів з декількома тестами стиснення файлів , але FreeArc швидше.


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