17

Каталог размером 398 МБ был сжат только до 393 МБ с использованием 7Z и обычного сжатия ZIP. Это нормально? Если так, почему люди продолжают использовать ZIP в Windows?

6 ответов6

69

Если вы сжимаете вещи, которые уже сжаты (AVI, JPEG, MP3), вы не получите ничего, кроме как упаковать все в один файл.

31

Сжатие работает, ища повторяющиеся узоры внутри элементов для сжатия. Кроме того, поскольку вы не хотите терять какие-либо данные при сжатии файлов, сжатие должно быть без потерь(*).
Теперь, подумав об этом, подумайте о том, как файлы (элементы) хранятся на компьютере. На самом низком уровне все они представляют собой просто набор из 0 и 1.

Таким образом, вопрос может быть преобразован в: « Как я могу представить группу из 1 и 0 более компактным способом, чем исходное представление?"

Итак, давайте начнем с самого начала, как вы можете сжать нормальное представление одного бита (один 1 или один 0)?
Ответ очень прост: вы не можете!... один бит представлен наиболее компактным образом.

Справедливо, давайте возьмем более крупный пример, как бы вы сжимали двоичную строку, такую как 0111 0111 0100 0111?
Ну, потому что мы уже знаем, что взгляд на отдельные части не поможет нам вообще, мы знаем, что мы должны смотреть в большем масштабе. Например, давайте возьмем 4 бита за раз. Теперь мы видим, что двоичная строка "0111" будет встречаться в примере 3 раза, так почему бы нам не представить это одним битом: 0? но это все еще оставляет 0100 в темноте, поэтому давайте представим, что с "1"
Мы знаем, что сжали оригинал до: "0010"

Это действительно хорошо! Однако это только базовые основы "алгоритма кодирования Хаффмана", и в реальном мире это будет немного сложнее (и вам также нужно будет хранить таблицу с информацией о кодировке, но это немного далеко за ответ на этот вопрос).

Теперь, чтобы действительно ответить на ваш вопрос: почему не все данные сжимаются так хорошо? Хорошо, давайте возьмем другой пример: "0001 0110 1000 1111", если мы будем использовать ту же технику, что и выше, мы не сможем сжать данные (повторение не найдено) и, следовательно, не выиграет от сжатия ...


(*) Конечно, есть исключения. Наиболее известным примером этого является сжатие, используемое для файлов MP3. здесь некоторая информация о звуках будет потеряна при конвертации из исходного файла в формат MP3, таким образом , это сжатие с потерями. Еще один пример.JPG формат для изображений

6

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

6

Из раздела Ограничения статьи Википедии о сжатии без потерь:

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

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

4

Это нормально?

Нет. Не с "нормальными" файлами. Какие файлы вы сжимали? Если они уже были сжаты, например, в формате JPG, GIF, PNG, видео или даже других ZIP-файлов, то они не будут сильно сжиматься никаким алгоритмом. Если вы попытаетесь сжать файлы Text, XML, несжатый BMP, исходный код и т.д., Zip обеспечит хорошее сжатие, но, вероятно, не самое лучшее.

Почему люди продолжают использовать ZIP в Windows?

Одна из причин заключается в том, что в систему встроена удобная обработка почтовых индексов - вы можете щелкнуть правой кнопкой мыши в любом месте и создать новый ZIP-файл, а затем добавить в него что-нибудь. Вы можете просто дважды щелкнуть файл ZIP, и он откроется как папка. Вы можете скопировать вещи из этого и иногда даже использовать это в месте. Вам не нужно устанавливать WinZip или 7z или любую другую программу. Я обычно рекомендую людям этого не делать.

2

В zip-архиве, содержащем много файлов, каждый файл сжимается независимо. Если между файлами существует большое сходство, то другой инструмент может дать гораздо лучшее сжатие.

Например, tar.gz объединяет файлы, а затем сжимает результаты. Аналогично, "сплошной" rar-файл использует сходства между файлами.

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

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