Каталог 398 МБ был сжат только до 393 МБ с использованием 7Z и обычного сжатия ZIP. Это нормально? Если так, почему люди продолжают использовать ZIP в Windows?
Каталог 398 МБ был сжат только до 393 МБ с использованием 7Z и обычного сжатия ZIP. Это нормально? Если так, почему люди продолжают использовать ZIP в Windows?
Ответы:
Если вы сжимаете вещи, которые уже сжаты (AVI, JPEG, MP3), вы не получите ничего, кроме как упаковать все в один файл.
Сжатие работает путем поиска повторяющихся шаблонов внутри элементов для сжатия. Кроме того, поскольку вы не хотите терять какие-либо данные при сжатии файлов, сжатие должно быть без потерь (*).
Теперь, подумав об этом, подумайте о том, как файлы (элементы) хранятся на компьютере. На самом низком уровне все они представляют собой просто набор из 0 и 1.
Таким образом, вопрос может быть преобразован в: « Как я могу представить группу из 1 и 0 более компактным способом, чем исходное представление? »
Итак, давайте начнем с самого начала, как вы можете сжать нормальное представление одного бита (один 1 или один 0)?
Ответ очень прост: вы не можете! ... один бит представлен наиболее компактным образом.
Справедливо, давайте рассмотрим пример побольше, как бы вы сжимали двоичную строку, например, 0111 0111 0100 0111 ?
Ну, потому что мы уже знаем, что взгляд на отдельные части не поможет нам вообще, мы знаем, что мы должны смотреть в большем масштабе. Например, давайте возьмем 4 бита за раз. Теперь мы видим, что двоичная строка «0111» будет встречаться в примере 3 раза, так почему бы нам не представить это одним битом: 0? но это все еще оставляет 0100 в темноте, поэтому давайте представим, что с «1»
мы знаем, сжали оригинал до: «0010»
Это действительно хорошо! Однако это лишь базовые основы «алгоритма кодирования Хаффмана» , и в реальном мире это будет немного сложнее (и вам также нужно будет хранить таблицу с информацией о кодировке, но это немного далеко за ответ на этот вопрос).
Теперь, чтобы действительно ответить на ваш вопрос: почему не все данные сжимаются так хорошо? Хорошо, давайте возьмем другой пример: «0001 0110 1000 1111», если мы будем использовать ту же технику, что и выше, мы не сможем сжать данные (повторение не найдено) и, следовательно, не выиграет от сжатия ...
(*) Конечно, есть исключения. Наиболее известным примером этого является сжатие, используемое для файлов MP3. Здесь некоторая информация о звуках будет потеряна при конвертации из исходного файла в формат MP3, поэтому это сжатие с потерями . Другой пример - формат .JPG для изображений.
Из раздела Ограничения статьи Википедии о сжатии без потерь :
Алгоритмы сжатия данных без потерь не могут гарантировать сжатие для всех наборов входных данных. Другими словами, для любого (без потерь) алгоритма сжатия данных будет входной набор данных, который не становится меньше при обработке алгоритмом. Это легко доказать с помощью элементарной математики с использованием счетного аргумента. ...
По сути, теоретически невозможно сжать все возможные входные данные без потерь.
Это нормально?
Нет. Не с "нормальными" файлами. Какие файлы вы сжимали? Если они уже были сжаты, например, являются файлами JPG, GIF, PNG, видео или даже другими ZIP-файлами, то они не будут сильно сжиматься никаким алгоритмом. Если вы попытаетесь сжать текст, XML, несжатый BMP, исходный код и другие файлы, zip обеспечит хорошее сжатие, но, вероятно, не самое лучшее.
Почему люди продолжают использовать ZIP в Windows?
Одна из причин заключается в том, что в систему встроена удобная обработка почтовых индексов - вы можете щелкнуть правой кнопкой мыши в любом месте и создать новый ZIP-файл, а затем добавить в него что-нибудь. Вы можете просто дважды щелкнуть файл ZIP, и он откроется как папка. Вы можете скопировать вещи из этого и иногда даже использовать это на месте. Вам не нужно устанавливать WinZip или 7z или любую другую программу. Я обычно рекомендую людям этого не делать.
В zip-архиве, содержащем много файлов, каждый файл сжимается независимо. Если между файлами существует большое сходство, то другой инструмент может дать гораздо лучшее сжатие.
Например, tar.gz объединяет файлы, а затем сжимает результаты. Аналогично, «сплошной» rar-файл использует сходства между файлами.
Недостатком tar.gz или сплошного rar является то, что вы больше не можете извлекать один файл из большого архива, не распаковывая архив до того места, где находится нужный файл.