Максимальное сжатие файлов (для веб-передачи)?

55223
rzlines

Я видел несколько сильно сжатых файлов, таких как 700 МБ данных, сжатых до 30-50 МБ.

Но как вы получаете такие сжатые файлы? Я пытался использовать программное обеспечение, такое как WinRAR и 7Zip, но никогда не достиг такого высокого сжатия.

Какие методы / программное обеспечение позволяют вам так хорошо сжимать файлы?

(PS Я использую Windows XP)

14
Хорошая идея ... но откуда вы берете такие файлы? Robinicks 14 лет назад 0
Я видел 7zip сжатые файлы журнала сервера (в основном текстовые) до 1% от их первоначального размера. Umber Ferrule 14 лет назад 3
Откройте Блокнот. Тип 1 миллиард раз "А". Сохраните, затем сожмите. ВОТ ЭТО ДА! Создайте приложение, которое записывает 1 миллиард (истинных) случайных чисел в файл. Сожмите это. А? igrimpe 11 лет назад 2
igrimpe: Many compression algorithms index patterns. A billion A's is an A a billion times. You can compress that to [A]. If you have a billion random numbers, it becomes difficult to do pattern matching since each consecutive number in a given subset decreases the probability of a matching subset exponentially. AaronF 7 лет назад 0

9 ответов на вопрос

12
Nifle

Это полностью зависит от сжимаемых данных.

Текст сжимается очень хорошо, двоичные форматы не очень хорошо, а сжатые данные (mp3, jpg, mpeg) - совсем нет.

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

Я знаю, что сжатие зависит от типа данных, но есть ли какие-то конкретные методы, которые помогут вам сжимать файлы дальше? rzlines 14 лет назад 0
После того, как вы сжимаете что-то, обычно невозможно получить это заметно меньше. Вам просто нужно выбрать подходящий метод сжатия для ваших данных. Nifle 14 лет назад 3
Текст может быть легко сжат до 90%. Georg Schölly 13 лет назад 0
@ GeorgSchölly: это отлично. Потому что я могу преобразовать любые данные в текст, например, преобразовать каждый двоичный байт в две шестнадцатеричные цифры, отображаемые в текст. Это удвоит мой размер, но тогда экономия 90% от удвоенного размера приведет к общей экономии 80%. (Или я мог бы использовать base64 для большей эффективности преобразования двоичного текста в текстовый.) Это поразительно хорошая новость! :) TOOGAM 6 лет назад 0
10
izb

Если время, необходимое для сжатия данных, не является проблемой, вы можете оптимизировать сжатый размер, используя несколько различных инструментов вместе.

Сожмите данные несколько раз, используя различные инструменты, такие как 7zip, winrar (для zip) и bjwflate.

(Обратите внимание, что это не означает, что нужно сжать zip-файл снова и снова, а создать несколько альтернативных zip-файлов с использованием различных инструментов)

Затем запустите deflopt для каждого архива, чтобы немного уменьшить каждый архив.

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

Тем не менее, вы должны заметить, что это не гарантирует, что ваши файлы будут работать магически. Некоторые типы данных просто не очень хорошо сжимаются, например, JPEG и MP3. Эти файлы уже сжаты внутри.

JPEG и MP3 не заархивированы. Они сжаты, но не застегнуты. KovBal 14 лет назад 4
Это невероятно плохой совет, пытаться использовать несколько алгоритмов сжатия последовательно - очень плохая идея. Каждый алгоритм создает сжатый файл + накладные расходы, поэтому, используя несколько, вы на самом деле _добавляете_ данные к данным, которые пытаетесь сжать - это все равно, что пытаться вырыть яму в песке, чем глубже вы идете, тем больше песка льется на вы. Вам гораздо лучше использовать один хороший алгоритм при максимальных настройках сжатия. Tacroy 11 лет назад 0
Я думаю, что вы неправильно поняли .. одни и те же данные повторно не сжимаются. Скорее вы просто выбираете лучший алгоритм для каждого файла, а не для архива. izb 11 лет назад 0
* Сжатие данных несколько раз * довольно обманчиво. ta.speot.is 11 лет назад 6
7
Alexander Riccio

Предыдущие ответы ошибочны на порядок!

Лучший алгоритм сжатия, с которым у меня есть личный опыт, это paq8o10t (см. Страницу zpaq и PDF ).

Подсказка: команда для сжатия files_or_folders будет выглядеть так:

paq8o10t -5 archive files_or_folders 

Archive size vs. time to compress and extract 10 GB (79,431 files) to an external USB hard drive at default and maximum settings on a Dell Latitude E6510 laptop (Core i7 M620, 2+2 hyperthreads, 2.66 GHz, 4 GB, Ubuntu Linux, Wine 1.6). Data from 10 GB Benchmark (system 4).

Источник: инкрементная утилита архивации журналов и архиватор

Вы можете найти зеркало исходного кода на GitHub .


Немного лучший алгоритм сжатия и победитель премии Хаттера - decomp8 (см. Ссылку на странице с призом). Тем не менее, нет программы компрессора, которую вы могли бы использовать.


Для действительно больших файлов lrzip может достичь коэффициентов сжатия, которые просто комичны .

Пример из README.benchmarks:


Давайте разберем шесть деревьев ядра на одну версию в виде tarball, от 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 
Он оптимизирован для обеспечения максимальной степени сжатия, но намного медленнее, чем у ближайших соперников. Eric J. 11 лет назад 0
@Eric J. да, но в вопросе не указана скорость сжатия / распаковки;) Alexander Riccio 10 лет назад 1
3
idan315

Squeezechart.com содержит сравнения различных степеней сжатия. Хотя, как говорится в ответе Nifle, вы вряд ли получите такие высокие коэффициенты сжатия для двоичных форматов.

2
tjrobinson

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

Для 7-Zip найдите «Добавить в архив» во встроенной справке для более подробной информации.

2
LifeH2O

Просто посмотрите Сводку тестов производительности для сжатия нескольких файлов, которая имеет лучший список сжатия, который состоит из полного теста сжатия.

Топ 30

enter image description here

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

2
kenorb

Вы можете попробовать 7zip со следующими ультра настройками:

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

Ваша лучшая ставка здесь, кажется, методом проб и ошибок. Попробуйте все доступные методы сжатия для каждого файла и выберите лучшее для размещения на вашем сайте. К счастью, компьютеры делают такие вещи довольно быстро и не скучают. Вы можете написать простой скрипт для автоматизации процесса, чтобы он был «относительно безболезненным».

Только не ожидайте чудес - 700 МБ до 30 МБ просто не случается так часто. Файлы журнала, как указано выше - да. «Ваш средний файл» - никак.

0
user712092

Nanozip, кажется, имеет наибольшее сжатие вместе с FreeArc. Но это еще не в окончательной версии. Вот как добивается хорошее сжатие Nanozip . У него очень высокая степень сжатия, и он не занимает слишком много времени, см. Сводку тестов производительности теста сжатия нескольких файлов, но FreeArc работает быстрее.

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