Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Как вычислить коэффициент сжатия файла


Как узнать степень сжатия файлов архива пошаговая инструкция

E-mail: [email protected]

Этот сайт использует cookie для хранения данных. Продолжая использовать сайт, Вы даете свое согласие на работу с этими файлами
ВНИМАНИЕ! При копировании материалов с сайта, активная обратная ссылка на kompmix.ru - обязательна.

kompmix.ru © 2021 Все права защищены.

§16. Сжатие данных






Содержание урока

Зачем и как сжимать данные?

Сжатие без потерь

Сжатие с потерями

Программы-архиваторы

Выводы. Интеллект-карта

Вопросы и задания

Практическая работа № 5 «Использование архиватора»


Зачем и как сжимать данные?


Ключевые слова:


 • сжатие данных 
 • коэффициент сжатия 
 • сжатие без потерь 
 • сжатие с потерями
 • архивация
 • самораспаковывающийся
 архив
 • программа-архиватор 
 • контрольная сумма 
 

Для того чтобы сэкономить место на внешних носителях (жёстких дисках, «флэшках») или ускорить передачу данных по компьютерным сетям, можно сжать данные — уменьшить их информационный объём, сократить размер файла.

Как вы уже знаете, рисунки часто хранятся в сжатом виде. Кроме того, сжатие почти всегда используется при хранении и передаче звука и видео — упаковку и распаковку этих данных выполняют специальные программы-кодеки.

Покажем, как можно сжать данные, на простом примере. Есть файл, в котором в 8-битной кодировке записаны сначала 100 русских букв А, а потом — 100 букв Б (рис. 2.39).

Рис. 2.39

Каждая буква на рис. 2.39 занимает 8 бит. Определите информационный объём файла в байтах.

Теперь запишем те же самые данные иначе: сначала количество повторений первого символа, а затем — сам первый символ, потом так же для второго символа (рис. 2.40).

Рис. 2.40

Каждая ячейка на рис. 2.40 занимает 8 бит. Определите информационный объём файла в байтах.

Объём файла уменьшился, это значит, что мы сжали данные.

Коэффициент сжатия — это отношение размера исходного файла I O к размеру сжатого файла IСЖ: kсж = IO / IСЖ

Определите коэффициент сжатия файла в рассмотренном выше примере.

Почему же этот файл удалось так удачно сжать? Всё дело в том, что в нём были длинные цепочки повторяющихся символов, и мы применили алгоритм, который очень удачно их сжимает. Этот алгоритм называется кодированием цепочек одинаковых символов (по-английски — RLE 1) : Run Length Encoding).


1) Алгоритм RLE можно успешно использовать для сжатия рисунков, в которых большие области закрашены одним цветом.


В файле записаны 100 различных символов. Определите коэффициент сжатия файла с помощью алгоритма RLE. Что означает полученное число?

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

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

Следующая страница Сжатие без потерь

Cкачать материалы урока

Показатель степени сжатия файлов — Студопедия.Нет

Реферат на тему: "Программы-архиваторы"

Выполнила: Дмитриева Диана

 Содержание

1.Введение

2.Основные виды программ-архиваторов

3.Сжатие файлов при архивации

4. Показатель степени сжатия файлов

5. Оценка функциональности самых популярных архиваторов

5.1 WinZip

5.2 WinRAR

5.3 WinAce

5.4 7-Zip

6.Заключение

7.Список литературы

Введение

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

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

Программы-упаковщики (архиваторы) позволяют за счет специальных методов сжатия информации создавать копии файлов меньшего размера и объединять копии нескольких файлов в один архивный файл. Это даёт возможность на дисках или дискетах разместить больше информации, то есть повысить плотность хранения информации на единицу объёма носителя (дискеты или диска).

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

Работа архиваторов основана на том, что они находят в файлах повторяющиеся участки и пробелы, помечают их в архивном файле и затем при распаковке восстанавливают по этим отметкам исходные файлы.

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

Ряд архиваторов позволяют создавать многотомные архивы, самоизвлекающиеся архивы, архивы, содержащие каталоги. Наиболее популярны и широко используются следующие архиваторы: ARJ, PKZIP/PKUNZIP, RAR, ACE, LHA, ICE, PAK, PKARC/PKXARC, ZOO, HYPER, AIN.

Наиболее высокоэффективными являются архиваторы RAR, ACE, AIN, ARJ.

Основные виды программ-архиваторов

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

В настоящее время применяется несколько десятков программ - архиваторов, которые отличаются перечнем функций и параметрами работы, однако лучшие из них имеют примерно одинаковые характеристики. Из числа наиболее популярных программ можно выделить:, PKPAK, LHA, ICE, HYPER, ZIP, РАК, ZOO, EXPAND, разработанные за рубежом, а также AIN и RAR, разработанные в России. Обычно упаковка и распаковка файлов выполняются одной и той же программой, но в некоторых случаях это осуществляется разными программами, например, программа РКZIР производит упаковку файлов, a PKUNZIP - распаковку файлов.

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

Самораспаковывающийся архивный файл - это загрузочный, исполняемый модуль, который способен к самостоятельной разархивации находящихся в нем файлов без использования программы - архиватора.

Самораспаковывающийся архив получил название SFX - архив (SelF - eXtracting).

архиватор сжатие упаковщик потеря

Сжатие файлов при архивации

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

·степень сжатия - отношение объемов исходного и результирующего потоков;

·скорость сжатия - время, затрачиваемое на сжатие некоторого объема информации входного потока, до получения из него эквивалентного выходного потока;

·качество сжатия - величина, показывающая, на сколько сильно упакован выходной поток при применении к нему повторного сжатия по тому же или другому алгоритму.

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

Все алгоритмы сжатия данных делятся на:

) алгоритмы сжатия без потерь, при использовании которых данные на приемной восстанавливаются без малейших изменений;

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

Существует два основных метода архивации без потерь:

алгоритм Хаффмана (англ. Huffman), ориентированный на сжатие последовательностей байт, не связанных между собой,

алгоритм Лемпеля-Зива (англ. Lempel, Ziv), ориентированный на сжатие любых видов текстов, то есть использующий факт неоднократного повторения "слов" - последовательностей байт.

Практически все популярные программы архивации без потерь (ARJ, RAR, ZIP и т.п.) используют объединение этих двух методов - алгоритм LZH.

Алгоритм Хаффмана.

Алгоритм основан на том факте, что некоторые символы из стандартного 256-символьного набора в произвольном тексте могут встречаться чаще среднего периода повтора, а другие, соответственно, - реже. Следовательно, если $+o записи распространенных символов использовать короткие последовательности бит, длиной меньше 8, а для записи редких символов - длинные, то суммарный объем файла уменьшится.

Алгоритм Лемпеля-Зива. Классический алгоритм Лемпеля-Зива -LZ77, названный так по году своего опубликования, предельно прост. Он формулируется следующим образом: если в прошедшем ранее выходном потоке уже встречалась подобная последовательность байт, причем запись о ее длине и смещении от текущей позиции короче чем сама эта последовательность, то в выходной файл записывается ссылка (смещение, длина), а не сама последовательность.

Показатель степени сжатия файлов

Сжатие информации в архивных файлах производится за счет устранения избыточности различными способами, например за счет упрощения кодов, исключения из них постоянных битов или представления повторяющихся символов или повторяющейся последовательности символов в виде коэффициента повторения и соответствующих символов. Алгоритмы подобного сжатия информации реализованы в специальных программах-архиваторах (наиболее известные из которых arj/arjfolder, pkzip/pkunzip/winzip, rar/winrar) применяются определенные Сжиматься могут как один, так и несколько файлов, которые в сжатом виде помещаются в так называемый архивный файл или архив.

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

Степень сжатия файлов характеризуется коэффициентом Кс, определяемым как отношение объема сжатого файла Vc к объему исходного файла Vо, выраженное в процентах (в некоторых источниках используется обратное соотношение):

Кс=(Vc/Vo)*100%

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

Наиболее хорошо сжимаются файлы графических образов, текстовые файлы и файлы данных, для которых коэффициент сжатия может достигать 5 - 40%, меньше сжимаются файлы исполняемых программ и загрузочных модулей Кс = 60 - 90%. Почти не сжимаются архивные файлы. Это нетрудно объяснить, если знать, что большинство программ-архиваторов используют для сжатия варианты алгоритма LZ77 (Лемпеля-Зива), суть которого заключается в особом кодировании повторяющихся последовательностей байт (читай - символов). Частота встречаемости таких повторов наиболее высока в текстах и точечной графике и практически сведена к нулю в архивах.

Кроме того, программы для архивации все же различаются реализациями алгоритмов сжатия, что соответственно влияет на степень сжатия.

В некоторые программы-архиваторы дополнительно включаются средства, направленные на уменьшение коэффициента сжатия Кс. Так в программе WinRAR реализован механизм непрерывного (solid) архивирования, при использовании которого может быть достигнута на 10 - 50% более высокая степень сжатия, чем дают обычные методы, особенно если упаковывается значительное количество небольших файлов однотипного содержания.

Характеристики архиваторов - обратно зависимые величины. То есть, чем больше скорость сжатия, тем меньше степень сжатия, и наоборот.

На компьютерном рынке предлагается множество архиваторов - у каждого свой набор поддерживаемых форматов, свои плюсы и минусы, свой круг почитателей, свято верящих в то, что используемый ими архиватор самый лучший. Не будем никого и ни в чем разубеждать - просто попытаемся беспристрастно оценить самые популярные архиваторы в плане функциональности и эффективности. К таковым отнесем WinZip, WinRAR, WinAce, 7-Zip - они лидируют по количеству скачиваний на софтовых серверах. Рассматривать остальные архиваторы вряд ли целесообразно, поскольку процент применяющих их пользователей (судя по числу скачиваний) невелик.

RLE и LZ77 / Хабр

Давным-давно, когда я был ещё наивным школьником, мне вдруг стало жутко любопытно: а каким же волшебным образом данные в архивах занимают меньше места? Оседлав свой верный диалап, я начал бороздить просторы Интернетов в поисках ответа, и нашёл множество статей с довольно подробным изложением интересующей меня информации. Но ни одна из них тогда не показалась мне простой для понимания — листинги кода казались китайской грамотой, а попытки понять необычную терминологию и разнообразные формулы не увенчивались успехом.

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

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


Алгоритм RLE является, наверное, самым простейшим из всех: суть его заключается в кодировании повторов. Другими словами, мы берём последовательности одинаковых элементов, и «схлопываем» их в пары «количество/значение». Например, строка вида «AAAAAAAABCCCC» может быть преобразована в запись вроде «8×A, B, 4×C». Это, в общем-то, всё, что надо знать об алгоритме.
Пример реализации

Допустим, у нас имеется набор неких целочисленных коэффициентов, которые могут принимать значения от 0 до 255. Логичным образом мы пришли к выводу, что разумно хранить этот набор в виде массива байт:
unsigned char data[] = { 0, 0, 0, 0, 0, 0, 4, 2, 0, 4, 4, 4, 4, 4, 4, 4, 80, 80, 80, 80, 0, 2, 2, 2, 2, 255, 255, 255, 255, 255, 0, 0 }; 

Для многих гораздо привычней будет видеть эти данные в виде hex-дампа:
0000: 00 00 00 00 00 00 04 02 00 04 04 04 04 04 04 04
0010: 50 50 50 50 00 02 02 02 02 FF FF FF FF FF 00 00

Подумав, мы решили, что хорошо бы для экономии места как-то сжимать такие наборы. Для этого мы проанализировали их и выявили закономерность: очень часто попадаются подпоследовательности, состоящие из одинаковых элементов. Конечно же, RLE для этого подойдёт как нельзя кстати!

Закодируем наши данные, используя свежеполученные знания: 6×0, 4, 2, 0, 7×4, 4×80, 0, 4×2, 5×255, 2×0.

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

Есть как минимум два выхода из этой ситуации:

  1. В качестве индикатора сжатой цепочки выделить одно значение байта, а в случае коллизии с реальными данными экранировать их. Например, если использовать в «служебных» целях значение 255, то при встрече этого значения во входных данных мы вынуждены будем писать «255, 255» и после индикатора использовать максимум 254.
  2. Структурировать закодированные данные, указывая количество не только для повторяемых, но и последующих далее одиночных элементов. Тогда мы будем заранее знать, где какие данные.

Первый способ в нашем случае не кажется эффективным, поэтому, пожалуй, прибегнем ко второму.

Итак, теперь у нас имеется два вида последовательностей: цепочки одиночных элементов (вроде «4, 2, 0») и цепочки одинаковых элементов (вроде «0, 0, 0, 0, 0, 0»). Выделим в «служебных» байтах один бит под тип последовательности: 0 — одиночные элементы, 1 — одинаковые. Возьмём для этого, скажем, старший бит байта.

В оставшихся 7 битах мы будем хранить длины последовательностей, т.е. максимальная длина кодируемой последовательности — 127 байт. Мы могли бы выделить под служебные нужды, допустим, два байта, но в нашем случае такие длинные последовательности встречаются крайне редко, поэтому проще и экономичней просто разбивать их на более короткие.

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

Первое, что должно броситься в глаза — при таком раскладе у нас есть парочка неиспользуемых значений. Не может быть последовательностей с нулевой длиной, поэтому мы можем увеличить максимальную длину до 128 байт, отнимая от длины единицу при кодировании и прибавляя при декодировании. Таким образом, мы можем кодировать длины от 1 до 128 вместо длин от 0 до 127.

Второе, что можно заметить — не бывает последовательностей одинаковых элементов единичной длины. Поэтому, от значения длины таких последовательностей при кодировании мы будем отнимать ещё единичку, увеличив тем самым их максимальную длину до 129 (максимальная длина цепочки одиночных элементов по-прежнему равна 128). Т.е. цепочки одинаковых элементов у нас могут иметь длину от 2 до 129.

Закодируем наши данные снова, но теперь уже и в понятном для компьютера виде. Будем записывать служебные байты как [T|L], где T — тип последовательности, а L — длина. Будем сразу учитывать, что длины мы записываем в изменённом виде: при T=0 отнимаем от L единицу, при T=1 — двойку.

[1|4], 0, [0|2], 4, 2, 0, [1|5], 4, [1|2], 80, [0|0], 0, [1|2], 2, [1|3], 255, [1|0], 0

Попробуем декодировать наш результат:

  • [1|4]. T=1, значит следующий байт будет повторяться L+2 (4+2) раз: 0, 0, 0, 0, 0, 0.
  • [0|2]. T=0, значит просто читаем L+1 (2+1) байт: 4, 2, 0.
  • [1|5]. T=1, повторяем следующий байт 5+2 раз: 4, 4, 4, 4, 4, 4, 4.
  • [1|2]. T=1, повторяем следующий байт 2+2 раз: 80, 80, 80, 80.
  • [0|0]. T=0, читаем 0+1 байт: 0.
  • [1|2]. T=1, повторяем байт 2+2 раз: 2, 2, 2, 2.
  • [1|3]. T=1, повторяем байт 3+2 раз: 255, 255, 255, 255, 255.
  • [1|0]. T=1, повторяем байт 0+2 раз: 0, 0.

А теперь последний шаг: сохраним полученный результат как массив байт. Например, пара [1|4], упакованная в байт, будет выглядеть вот так:

В итоге получаем следующее:
0000: 84 00 02 04 02 00 85 04 82 80 00 00 82 02 83 FF
0010: 80 00

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

Возможные улучшения

Эффективность алгоритма зависит не только от собственно алгоритма, но и от способа его реализации. Поэтому, для разных данных можно разрабатывать разные вариации кодирования и представления закодированных данных. Например, при кодировании изображений можно сделать цепочки переменной длины: выделить один бит под индикацию длинной цепочки, и если он выставлен в единицу, то хранить длину и в следующем байте тоже. Так мы жертвуем длиной коротких цепочек (65 элементов вместо 129), но зато даём возможность всего тремя байтами закодировать цепочки длиною до 16385 элементов (214 + 2)!

Дополнительная эффективность может быть достигнута путём использования эвристических методов кодирования. Например, закодируем нашим способом следующую цепочку: «ABBA». Мы получим «[0|0], A, [1|0], B, [0|0], A» — т.е. 4 байта мы превратили в 6, раздули исходные данные аж в полтора раза! И чем больше таких коротких чередующихся разнотипных последовательностей, тем больше избыточных данных. Если это учесть, то можно было бы закодировать результат как «[0|3], A, B, B, A» — мы бы потратили всего один лишний байт.


LZ77 — один из наиболее простых и известных алгоритмов в семействе LZ. Назван так в честь своих создателей: Абрахама Лемпеля (Abraham Lempel) и Якоба Зива (Jacob Ziv). Цифры 77 в названии означают 1977 год, в котором была опубликована статья с описанием этого алгоритма.

Основная идея заключается в том, чтобы кодировать одинаковые последовательности элементов. Т.е., если во входных данных какая-то цепочка элементов встречается более одного раза, то все последующие её вхождения можно заменить «ссылками» на её первый экземпляр.

Как и остальные алгоритмы этого семейства семейства, LZ77 использует словарь, в котором хранятся встречаемые ранее последовательности. Для этого он применяет принцип т.н. «скользящего окна»: области, всегда находящейся перед текущей позицией кодирования, в рамках которой мы можем адресовать ссылки. Это окно и является динамическим словарём для данного алгоритма — каждому элементу в нём соответствует два атрибута: позиция в окне и длина. Хотя в физическом смысле это просто участок памяти, который мы уже закодировали.

Пример реализации

Попробуем теперь что-нибудь закодировать. Сгенерируем для этого какую-нибудь подходящую строку (заранее извиняюсь за её нелепость):

«The compression and the decompression leave an impression. Hahahahaha!»

Вот как она будет выглядеть в памяти (кодировка ANSI):
0000: 54 68 65 20 63 6F 6D 70 72 65 73 73 69 6F 6E 20   The compression
0010: 61 6E 64 20 74 68 65 20 64 65 63 6F 6D 70 72 65   and the decompre
0020: 73 73 69 6F 6E 20 6C 65 61 76 65 20 61 6E 20 69   ssion leave an i
0030: 6D 70 72 65 73 73 69 6F 6E 2E 20 48 61 68 61 68   mpression. Hahah
0040: 61 68 61 68 61 21                                 ahaha!

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

«The compression and t[he ]de[compression ]leave[ an] i[mpression]. Hah[ahahaha]!»

Для пущей наглядности посмотрим на схему, где видны соответствия повторяемых последовательностей и их первых вхождений:

Пожалуй, единственным неясным моментом здесь будет последовательность «Hahahahaha!», ведь цепочке символов «ahahaha» соответствует короткая цепочка «ah». Но здесь нет ничего необычного, мы использовали кое-какой приём, позволяющий алгоритму иногда работать как описанный ранее RLE.

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

С этим разобрались. Теперь заменим найденные повторы на ссылки в словарь. Будем записывать ссылку в формате [P|L], где P — позиция первого вхождения цепочки в строке, L — её длина.

«The compression and t[22|3]de[5|12]leave[16|3] i[8|7]. Hah[61|7]!»

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

«The compression and t[20|3]de[22|12]leave[28|3] i[42|7]. Hah[2|7]!»

Теперь нам достаточно отнять P от текущей позиции кодирования, чтобы получить абсолютную позицию в строке.

Пришло время определиться с размером окна и максимальной длиной кодируемой фразы. Поскольку мы имеем дело с текстом, редко когда в нём будут встречаться особо длинные повторяющиеся последовательности. Так что выделим под их длину, скажем, 4 бита — лимита на 15 символов за раз нам вполне хватит.

А вот от размера окна уже зависит, насколько глубоко мы будем искать одинаковые цепочки. Поскольку мы имеем дело с небольшими текстами, то в самый раз будет дополнить используемое нами количество бит до двух байт: будем адресовать ссылки в диапазоне из 4096 байт, используя для этого 12 бит.

По опыту с RLE мы знаем, что не всякие значения могут быть использованы. Очевидно, что ссылка может иметь минимальное значение 1, поэтому, чтобы адресовать назад в диапазоне 1..4096, мы должны при кодировании отнимать от ссылки единицу, а при декодировании прибавлять обратно. То же самое с длинами последовательностей: вместо 0..15 будем использовать диапазон 2..17, поскольку с нулевыми длинами мы не работаем, а отдельные символы последовательностями не являются.

Итак, представим наш закодированный текст с учётом этих поправок:

«The compression and t[19|1]de[21|10]leave[27|1] i[41|5]. Hah[1|5]!»

Теперь, опять же, нам надо как-то отделить сжатые цепочки от остальных данных. Самый распространённый способ — снова использовать структуру и прямо указывать, где сжатые данные, а где нет. Для этого мы разделим закодированные данные на группы по восемь элементов (символов или ссылок), а перед каждой из таких групп будем вставлять байт, где каждый бит соответствует типу элемента: 0 для символа и 1 для ссылки.

Разделяем на группы:

  • «The comp»
  • «ression »
  • «and t[19|1]de»
  • «[21|10]leave[27|1] »
  • «i[41|5]. Hah[2|5]»
  • «!»

Компонуем группы:

«{0,0,0,0,0,0,0,0}The comp{0,0,0,0,0,0,0,0}ression {0,0,0,0,0,1,0,0}and t[19|1]de{1,0,0,0,0,0,1,0}[21|10]leave[27|1] {0,1,0,0,0,0,0,1}i[41|5]. Hah[1|5]{0}!»

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

Теперь нам остаётся только сгруппировать результат в массив байтов. Условимся, что мы используем биты и байты в порядке от старшего к младшему. Посмотрим, как пакуются в байты ссылки на примере [19|1]:

В итоге наш сжатый поток будет выглядеть так:

0000: 00 54 68 65 20 63 6f 6d 70 00 72 65 73 73 69 6f   #The comp#ressio
0010: 6e 20 04 61 6e 64 20 74 01 31 64 65 82 01 5a 6c   n #and t##de###l
0020: 65 61 76 65 01 b1 20 41 69 02 97 2e 20 48 61 68   eave## #i##. Hah
0030: 00 15 00 21 00 00 00 00 00 00 00 00 00 00 00 00   ###!

Возможные улучшения

В принципе, здесь будет верно всё, что описывалось для RLE. В частности, для демонстрации пользы эвристического подхода при кодировании, рассмотрим следующий пример:

«The long goooooong. The loooooower bound.»

Найдём последовательности только для слова «loooooower»:

«The long goooooong. The [lo][ooooo]wer bound.»

Для кодирования такого результата нам понадобится четыре байта на ссылки. Однако, более экономично было бы сделать так:

«The long goooooong. The l[oooooo]wer bound.»

Тогда мы потратили бы на один байт меньше.


Несмотря на свою простоту и, казалось бы, не слишком уж большую эффективность, эти алгоритмы до сих пор широко применяются в разнообразных областях IT-сферы.

Их плюс — простота и быстродействие, а на их принципах и их комбинациях могут быть основаны более сложные и эффективные алгоритмы.

Надеюсь, изложенная таким образом суть этих алгоритмов поможет кому-нибудь разобраться в основах и начать смотреть в сторону более серьёзных вещей.

Как посмотреть степень сжатия архива – инструкция

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

Узнаём степень сжатия архива

Для определения степени сжатия на компьютере должен быть установлен архиватор WinRar. Если он у вас не установлен, то вот в этой подобной пошаговой инструкции рассказывается о том, где его бесплатно скачать и как установить.

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

В нём выберите пункт Свойства.

В открывшемся окне перейдите во вкладку Архив. Там в строке Степень сжатия будет указан интересующий нас параметр.

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

Мы рады, что смогли помочь Вам в решении поставленной задачи или проблемы.

В свою очередь, Вы тоже можете нам очень помочь.

Просто поделитесь статьей в социальных сетях и мессенджерах с друзьями.

Поделившись результатами труда автора, вы окажете неоценимую помощь как ему самому, так и сайту в целом. Спасибо!

Опрос: помогла ли вам эта статья?  

(cбор пожертвований осуществляется через сервис «ЮMoney»)

На что пойдут пожертвования \ реквизиты других платёжных систем Привет.

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

Номер банковской карты: 5331 5721 0220 5546
Кошелёк ЮMoney: 410015361853797
Кошелёк WebMoney: P865066858877
PayPal: [email protected]
BitCoin: 1DZUZnSdcN6F4YKhf4BcArfQK8vQaRiA93

Оказавшие помощь:
Сергей И. - 500руб
<аноним> - 468руб
<аноним> - 294руб
Мария М. - 300руб
Валерий С. - 420руб
<аноним> - 600руб
Полина В. - 240руб

Деньги пойдут на оплату хостинга, продление домена, администрирование и развитие ресурса. Спасибо.
С уважением, создатель сайта IT-Actual.ru

Тестирование алгоритмов сжатия некоторых архиваторов (дополнено)

Введение


Архиваторами мы пользуемся постоянно. На нашем сайте имеется подробное (пусть и давно написанное) описание наиболее популярных программ-архиваторов (Архиваторы: Взгляд со стороны), которое мы здесь повторять не будем, а займемся только алгоритмами сжатия, которые применяются в этих программах. В чем здесь проблема? Современные архиваторы предоставляют нам возможность на выбор использовать несколько алгоритмов сжатия. Вот, например, характеристики некоторых программ...

Форматы, поддерживаемые архиваторами

 Архиватор Упаковка и распаковка Только распаковка
 WinZip ZIP TAR, GZIP, BH, ARJ, LZH, ARC
 WinRar RAR, ZIP CAB, ARJ, LZH,TAR, GZ, ACE, UUE, BZ2, JAR, JSO
 WinAce ACE, ZIP, LHA, MSCAB RAR, ARC, ATJ, GZIP, TAR ZOO
 7-Zip 7Z, ZIP, GZIP, TAR, BZIP2 RAR, CAB, ARJ, CPIO, RPM, DEB, SPLIT
 Power Archiver TAR, BH, CAB, LHA, ZIP RAR, ACE, ARJ, GZIP, BZIP2, ARC, ZOO

В зависимости от обстоятельств, мы применяем архиватор как компрессор, от которого требуется сжать информацию для более быстрой передачи по каналам связи (почта и Интернет). В других случаях большее значение имеет функция собственно архивации, то есть преобразование информации в компактный вид (один файл), чтобы избавиться от разукомплектации и, кроме того, сократить место, занимаемое на диске за счет файловой таблицы. Соответственно, большой интерес представляет показатель сжатия исходной информации и показатель скорости переработки исходной информации. Целью нашего исследования является определение абсолютных и относительных показателей степени сжатия и быстродействия алгоритмов (форматов), которые предоставляются в наше распоряжение архиваторами, указанными в таблице...

Содержание исследования планируется в следующем виде:

1. Создание комплексного и частных (по типам файлов) наборов информации (папок) для проведения испытаний (тестов).

2. Проведение предварительных тестов на комплексном наборе и уточнение (по результатам) плана дальнейших локальных испытаний.

3. Обработка и анализ результатов с обоснованием рекомендаций по практическому применению разных алгоритмов (форматов) архивации.

В качестве показателя степени сжатия принимается процентное отношение размера сжатой папки к ее исходному размеру, а в качестве показателя быстродействия - скорость переработки как частное от деления исходного размера в килобайтах на время переработки в секундах. Собственно, измерения выполняются только в отношении времени (секундомером). Ошибка измерения времени может исказить показатель быстродействия, когда этот показатель очень большой (более 1000 кб/сек). В других случаях ошибкой можно пренебречь.

Определение общих характеристик основных архивных форматов


Для испытаний использовался материал, имитирующий некоторую "пользовательскую корзину", составленную из файлов формата DOC, HTM, JPG, MP3, PDF, TXT. Всего корзина содержит 359 папок и 3337 файлов, и имеет суммарный размер 208893 Кбайт (около 204 Мбайт). Состав этого набора приведен в следующей таблице:

Состав набора файлов для испытаний

 Тип Количество папок Количество файлов Размер, Кбайт На диске, Кбайт
 TXT 0 2 34781 34783
 HTM 329 2869 30913 36962
 DOC 3 24 31443 31474
 PDF 0 1 33691 33694
 JPG 26 430 40493 41382
 MP3 1 11 37571 37589
     
 Итого 359 3337 208893 215884

Каждое испытание заключалось в проведении цикла архивации с фиксацией времени работы архиватора от момента нажатия кнопки Add до момента открытия окна с содержанием полученного архивного файла.

Тестировавшиеся программы:

WinZip 8.1 SR-1
WinRar 3.30
WinAce 2.5
7Zip 3.13
Power Archiver 8.70 07b


Информация о конфигурации системы

Процессор Intel Celeron 1700MHz
256 Mb (DDR SDRAM)
HDD ST360015A (60 Gb, 7200PRM)
Windows 2000 Pro, SP3

Результаты испытаний приведены в следующих таблицах:

Результаты тестирования для формата ZIP

 Архиватор / Режим Размер, Кбайт Время, мин.-сек. Сжатие Скорость, Кбайт/с
     
 WinZip    
 Без сжатия 208893 - - -
 Норма 146408 2-00 70.0% 1740
 Максимум 145884 2-45 69.8% 1266
 Быстро 147690 1-58 70.7% 1770
 Очень быстро 149450 1-50 71.5% 1899
     
 WinRar    
 Обычно 146 078 2-22 69.9% 1471
 Максимум 145881 3-07 69.8% 1117
     
 WinAce    
 Норма 146 418 2-28 70.1% 1411
 Максимум 145844 2-40 69.8% 1305
     
 7-Zip    
 Норма/Deflate 145 480 3-22 69.6% 1034
 Ультра/Deflate 145 341 5-55 69.6% 588
 Ультра/Deflate64 144924 6-10 69.4% 565
     
 Power Archiver    
 Норма 146074 3-40 69.9% 950
 Максимум 145948 3-42 69.9% 941

В целом, сжатие, получаемое форматом ZIP, примерно одного порядка, и мало зависит от архиватора - за исключением архиватора 7-ZIP, в котором с помощью изменения метода сжатия можно несколько улучшить показатель и для формата ZIP. Размер словарей (архиваторы WinRar и 7-ZIP) специально в данной серии испытаний не изменялся, а устанавливался автоматически (по умолчанию).

Результаты тестирования формата RAR

 Режим Размер, Кбайт Время, мин.-сек. Сжатие Скорость, Кбайт/с
 Без сжатия 208893 - - -
 Store 209129 0-58 100.1% 3601
 Fastest 144017 6-00 68.9% 580
 Fast 143281 6-22 68.6% 547
 Normal 142830 6-40 68.4% 522
 Good 139826 6-58 66.9% 499
 Best 140023 7-25 67.0% 469
 Best (64kb) 140685 5-40 67.3% 614

В настройке режима возможно изменение размера словаря в пределах 64 - 4096 килобайт. По умолчанию устанавливается максимальный размер (4096 Кб), с которым и получены результаты в данной таблице. Только в строке Best (64kb) был установлен минимальный размер - 64 килобайта. Очевидно, что полученное изменение сжатия и быстродействия может служить аналогом для всех других строк этой таблицы.
Строки Good и Best проверялись, и их значения полностью подтвердились, поэтому нелогичный переход между ними нельзя считать следствием ошибок при тестировании.

Результаты тестирования формата ACE

 Режим Размер, Кбайт Время, мин.-сек. Сжатие Скорость, Кбайт/с
 Без сжатия 208893 - - -
 Normal 132978 8-30 63.7% 410
 Maximum 132918 8-42 63.6% 400
 Good 132925 9-50 63.6% 354
 Fast 133216 8-53 63.8% 397
 Super Fast 133273 8-46 63.8% 397
 Store 209136 1-48 100.1% 1934

Изменения режима работы архиватора WinAce в нашем случае мало влияют на показатели сжатия - разброс находится в пределах десятых долей процента.

Результаты тестирования формата 7z

 Режим Размер, Кбайт Время, мин.-сек. Сжатие Скорость, Кбайт/с
 Без сжатия 208893 - - -
 Нормальный 130964 9-24 64.2% 362
 Максимальный 130000 13-51 63.7% 246
 Быстрый 141922 4-16 69.6% 797
 Ультра (1 Мб) 131392 8-47 64.4% 387
 Ультра (6 Мб) 130101 11-40 63.8% 291
 Ультра (12 мб) 129871 12-47 63.7% 266
 Ультра (24 мб) - - - -
 Ультра (Deflate) 141171 3-15 69.2% 1046
 Ультра (PPMd) 140171 8-45 68.7% 389
 Ультра (Bzip2) 135342 7-32 66.4% 451

Примечание: в режиме Ультра (LZMA) при задании размера Словаря в 24 мегабайт скорость снизилась настолько, что проведение теста стало невозможным.

Для формата 7z архиватор позволяет устанавливать:

- Уровень (Быстрый, Нормальный, Максимальный, Ультра),
- Метод (LZMA, PPMd, Bzip2, Deflate),
- Размер словаря (32кб - 192 мб),
- Размер слова (8 - 255).

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

- Чем больше размер словаря, тем больше сжатие и время упаковки. Сжатие возрастает медленно, а время упаковки - вырастает очень сильно.

- То же самое - в отношении размера слова.

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


Результаты тестирования формата CAB

 Режим Размер, Кбайт Время, мин.-сек. Сжатие Скорость, Кбайт/с
 Без сжатия 208893 - - -
     
 PowerArchiver    
 Medium 140444 9-55 67.2% 351
 Maximum 137152 15-55 65.6% 219
     
 WinAce    
 Норма 144374 3-24 69.1% 1024
 Максимум 138538 12-54 66.3% 270

Формат CAB (cabinet file) основан на алгоритмах MS-Zip и LZX, поддерживается и применяется фирмой Microsoft. Распаковщики формата имеются в Windows 98 и выше. Алгоритм имеет открытый код и может свободно применяться всеми программистами.

Результаты тестирования форматов BH и LHA

 Режим Размер, Кбайт Время, мин.-сек. Сжатие Скорость, Кбайт/с
 Без сжатия 208893 - - -
     
 PowerArchiver, формат LHA    
 Norma 147518 4-40 70.6% 746
 Maximum 147518 4-47 70.6% 728
     
 PowerArchiver, формат BH    
 Norma 145912 2-16 69.8% 1536
 Maximum 145718 2-34 69.8% 1356

Показатели архивных форматов LHA и BH имеют уровень показателей архивного формата ZIP, и каких-то преимуществ не просматривается.

В общем, как видно, наилучшие показатели сжатия обеспечиваются форматами ACE и 7Z. Лучшие показатели быстродействия - показали форматы ZIP и BH. Дальнейшие испытания планируется провести по такой же принципиальной схеме, но с "корзинами" однородного состава, с форматами файлов: TXT, HTML, DOC, JPG, MP3, PDF.

Определение сжимаемости файлов разных форматов


Для обеспечения этой серии испытаний были составлены совершенно однородные по форматам файлов наборы, причем, повторяющиеся файлы в наборе исключались. Файлы EXE и DLL брались из системной папки Windows без всякого отбора. Дело в том, что файлы формата EXE бывают уже сжатыми и дальнейшее их сжатие - не имеет смысла. Характеристики наборов приводятся в следующей таблице:

Форматы файлов в наборах для испытаний

 Формат Кол-во папок Кол-во файлов Суммарный размер, Кбайт
 TXT 0 27 35096
 HTM 7 1371 25076
 DOC 1 33 37211
 PDF 0 1 33691
 JPG 26 430 40493
 MP3 2 11 37571
 EXE 0 316 32446
 DLL 0 184 40323
 XLS 6 15 17228
 CHM 0 69 33940
 MPEG 0 24 46606
 WAV 0 1 30804
 BMP 0 15 31713
 AVI 0 89 9261

При испытаниях использовался только нормальный (обычный) режим работы архиватора. При этом, каждый формат архива создавался собственным архиватором (WinZip, WinRar, WinAce, 7-Zip), для упаковки в формат CAB использовался Power Archiver, который своего (фирменного) формата не имеет.

Сжимаемость файлов в зависимости от формата архива

 Формат ZIP RAR ACE 7Z CAB
 TXT 43.7% 37.8% 37.4% 34.3% 36.3%
 HTM 29.2% 28.3% 9.09% 7.75% 15.0%
 DOC 8.76% 6.39% 5.47% 5.21% 6.49%
 PDF 97.7% 97.4% 97.8% 97.5% 97.3%
 JPG 98.5% 98.5% 85.0% 85.1% 97.9%
 MP3 98.1% 97.9% 98.1% 97.9% 97.7%
 EXE 46.9% 42.1% 37.8% 32.7% 39.3%
 DLL 45.6% 39.6% 37.6% 34.3% 39.6%
 XLS 11.8% 8.27% 7.44% 5.97% 8.49%
 CHM 98.6% 98.8% 99.0% 99.6% 98.6%
 MPEG 95.3% 94.7% 94.8% 94.5% 94.4%
 AVI 86.1% 84.1% 84.5% 82.7% 83.4%
 WAV 92.2% 62.8% 62.6% 87.0% 92.1%
 BMP 63.5% 31.9% 30.6% 51.5% 56.2%
      
 Средний показатель 65.5% 59.2% 56.2% 58.3% 61.6%

В качестве комментария к таблице можно отметить следующее:

- Наилучшее сжатие по основным форматам исходных файлов обеспечивается архивным форматом 7z.

- Лучший показатель в среднем имеет архивный формат ACE за счет рекордного сжатия форматов WAV и BMP.

Если говорить о сжимаемости исходных файлов, то можно отметить следующее: показатель сжатия зависит от исходного формата файлов, иногда подразумевающего внутреннее сжатие данных. Если файл предварительно уплотнен по своим алгоритмам, то сжимаемость его архиватором - небольшая. Например, файл формата CHM является уплотненным вариантом файла формата HTML и, соответственно, сжимаемость их - разная. То же мы видим в отношении Wav и MP3, BMP и JPG и так далее.

Скорость работы архиватора, Кбайт/с

 Формат ZIP RAR ACE 7Z CAB
 TXT 2064 408 386 217 226
 HTM 2507 836 627 643 411
 DOC 7400 2862 1550 1378 886
 PDF 2246 293 370 387 370
 JPG 2670 587 337 368 287
 MP3 2348 458 368 335 332
 EXE 2318 773 601 416 433
 DLL 2016 858 672 474 434
 XLS 4300 1436 1148 507 224
 CHM 1886 556 365 357 323
 MPEG 2453 583 416 370 338
 AVI 1852 617 463 370 356
 WAV 2370 1711 1184 354 288
 BMP 2883 1269 933 401 373
      
 Средний показатель 2838 856 609 485 385

Эта таблица демонстрирует очевидное правило - за лучшее сжатие почти всегда необходимо платить скоростью упаковки.

Сжимаемость разных форматов файлов. Дополнение

 Формат ZIP RAR ACE 7Z
 VXD 55.1% 52.5% 43.3% 40.8%
 INF 14.9% 13.3% 13.2% 12.3%
 VBP 78.3% 72.6% 26.0% 18.5%
 GIF 90.0% 94.3% 87.2% 86.1%
 SCR 88.8% 88.0% 88.1% 87.9%
 DAT 23.1% 20.1% 20.5% 18.0%
 INI 35.6% 33.2% 32.5% 30.2%
     
 Средний показатель 55.1% 53.4% 44.4% 42.0%

Эта таблица содержит дополнительные данные по сжимаемости файловых форматов. Здесь тестирование проводилось без фиксации времени на наборах небольшого объема (100-200 кб). Как видно, по всем форматам наилучшее сжатие дает архивный формат 7z.

Далее, в качестве примера приведу результаты упаковки реального дистрибутива программы Norton Antivirus. Упаковка выполнялась в нормальном режиме, дополнительно получены самораспаковывающиеся варианты этих же архивов. Результат этого испытания приведен в следующей таблице (последняя колонка - примерное время загрузки упакованного дистрибутива по сети при обычном модемном соединении при скорости 2.7 Кбайт в секунду):

Пример упаковки дистрибутива Norton Antivirus

 Формат архива Размер, Кбайт Время Сжатие Время загрузки, час.-мин.
 Без сжатия 47410 - - 4-53
 ZIP 29045 0-21 61.3% 2-59
 RAR 26619 1-15 56.1% 2-44
 ACE 23838 1-30 50.3% 2-27
 7Z 22871 1-50 48.2% 2-21
 CAB 26804 2-22 56.5% 2-45
 EXE (RAR) 26671 1-15 56.3% 2-45
 EXE (ACE) 23903 1-30 50.4% 2-28
 EXE (7Z) 22941 1-52 48.4% 2-22

Результаты таблицы наглядно демонстрируют, что:

При передачи файлов по сети - упаковка практически обязательна.

Упаковка с хорошим сжатием может сократить время передачи файла, в нашем случае - на полчаса.

Применение перспективных форматов ACE и 7Z вполне оправдано уже сейчас в виде самораспаковывающихся архивов. Это обстоятельство желательно учитывать распространителям программной продукции по сети Интернет.

Архиватор 7-ZIP является хорошей программой с высокой степенью сжатия и обладает необходимым минимумом пользовательских удобств. Можно, в частности, удалять и просматривать отдельные файлы без общей распаковки архива. При этом, файлы открываются ассоциативными приложениями системы. Можно дополнять архив отдельными файлами.

Заключение


Программы-архиваторы остаются незаменимым средством упаковки и сжатия цифровой информации. Обработанная информация существенно экономит место на хранителях и время передачи по каналам связи в сети. Наиболее популярными и применяемыми являются сейчас форматы упаковки ZIP и RAR. Другие форматы, например, ARJ, ICE, PAC, ARC и некоторые еще - постепенно вытеснились и подзабылись. Но технология упаковки не стоит на месте. Архиваторы - востребованы, поэтому программисты непрерывно ведут поиск более эффективных методов сжатия. Об этом свидетельствуют и результаты нашего эксперимента. Реально существуют, по крайней мере, два архивных формата (ACE и 7z), которые по сжатию существенно превосходят привычные ZIP и RAR. Применение этих форматов позволит заметно сократить время передачи файлов по сети Интернет, что соответствует интересам многочисленных пользователей...

Дополнение от 24 мая 2004 г.


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

Дополнительное тестирование проделано в точности так, как это описано в основном разделе на тех же самых наборах материала. С учетом дополнительного тестирования таблица "Результаты тестирования формата RAR" основного текста стала выглядеть так...

Результаты тестирования формата RAR

 Режим Размер, Кбайт Время, мин.-сек. Сжатие Скорость, Кбайт/с
 Без сжатия 208893 - - -
 Store 209129 0-58 100.1% 3601
 Fastest 144017 6-00 68.9% 580
 Fast 143281 6-22 68.6% 547
 Normal 142830 6-40 68.4% 522
 Normal (Solid) 131664 9-14 63.0% 377
 Good 139826 6-58 66.9% 499
 Good (Solid) 129314 8-24 61.9% 414
 Best 140023 7-25 67.0% 469
 Best (Solid) 129527 8-36 62.0% 405
 Best (64kb) 140685 5-40 67.3% 614

Настройка архиватора WinRar включает в себя:

1. Выбор способа сжатия (Normal, Store, Fastest, Fast, Good, Best).

2. Выбор модификации:
- Add and replace files,
- Add and update files,
- Fresh existing files only,
- Syncronize axchive contents.

3. Выбор опции:
- Deleting files after archiving,
- Create SFX archive,
- Create solid archive,
- Put autohenlicity verification,
- Put recovery record,
- Test archived files,
- Lock archive.

Нетрудно заметить, что возможно более сотни комбинаций настроек, определяющих режим работы архиватора. Соответственно и диапазон результатов для этого формата и этого архиватора получился достаточно большим - степень сжатия: 61.9 - 68.9%, скорость: 377 - 614 Кбайт/сек.

Опцию Solid имеет также архиватор WinAce. Но в этом архиваторе опция (Make solid archive) включена постоянно (по умолчанию) и поэтому вошла в результаты тестирования. Таким образом, несправедливость была допущена только для формата RAR и архиватора WinRar.

С учетом новых обстоятельств таблица лидеров по степени сжатия выглядит так:

1. RAR (Good, Solid) - 61.9%.

2. 7-Zip (Максимум) - 62.2%.

3. ACE (Good) - 63.6%.

Дополненная таблица результатов упаковки реального дистрибутива программы Norton Antivirus ("Пример упаковки дистрибутива Norton Antivirus") стала выглядеть так...

Пример упаковки дистрибутива Norton Antivirus

 Формат архива Размер, Кбайт Время Сжатие Время загрузки, час.-мин.
 Без сжатия 47410 - - 4-53
 ZIP 29045 0-21 61.3% 2-59
 RAR 26619 1-15 56.1% 2-44
 RAR (Normal, Solid) 22745 1-21 48.0% 2-20
 RAR (Good, Solid) 22680 1-28 47.8% 2-20
 ACE 23838 1-30 50.3% 2-27
 7Z 22871 1-50 48.2% 2-21
 CAB 26804 2-22 56.5% 2-45
 EXE (RAR) 26671 1-15 56.3% 2-45
 EXE (RAR, Normal, Solid) 22797 1-29 48.1% 2-21
 EXE (ACE) 23903 1-30 50.4% 2-28
 EXE (7Z) 22941 1-52 48.4% 2-22

Результаты этой таблицы также подтверждают, что архиватор WinRar может обеспечить максимальное сжатие, и по этому показателю является лидером. В сравнении с форматом ZIP загрузка этого же дистрибутива в формате RAR может осуществлена на 39 минут короче...

В таблице с результатами тестирования формата 7z наш читатель Александр Рыхлов обнаружил ошибку в расчете показателя сжатия. Александру большое спасибо, а исправленная таблица "Результаты тестирования формата 7z" стала выглядеть так...

Результаты тестирования формата 7z

 Режим Размер, Кбайт Время, мин.-сек. Сжатие Скорость, Кбайт/с
 Без сжатия 208893 - - -
 Нормальный 130964 9-24 62.7% 362
 Максимальный 130000 13-51 62.2% 246
 Быстрый 141922 4-16 67.9% 797
 Ультра (1 Мб) 131392 8-47 62.9% 387
 Ультра (6 Мб) 130101 11-40 62.3% 291
 Ультра (12 мб) 129871 12-47 62.2% 266
 Ультра (24 мб) - - - -
 Ультра (Deflate) 141171 3-15 67.6% 1046
 Ультра (PPMd) 140171 8-45 67.1% 389
 Ультра (Bzip2) 135342 7-32 64.8% 451

Примечание: в режиме Ультра (LZMA) при задании размера Словаря в 24 мегабайт скорость снизилась настолько, что проведение теста стало невозможным.

Заключение


Назревавшая было сенсация о том, что архиватор WinRar не настолько хорош, как это считают многие пользователи, не состоялась. Наше тестирование подтвердило, что технические характеристики этого архиватора действительно на сегодняшний день самые высокие. Очень близкие показатели имеет архиватор 7-Zip, но по степени отработки и ползовательским качествам последний пока несколько уступает лидеру. Для получения максимального сжатия в архиваторе WinRar необходимо включать опцию Solid (по умолчанию она отключена), другие настройки (Normal, Good и т.д.) - имеют меньшее значение.

Прогнозирование времени или степени сжатия для сжатия файла без потерь?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
.Калькулятор степени сжатия

(статический и динамический)

Какая степень сжатия лучше всего?

Чем выше степень сжатия, тем лучше работает двигатель. . Однако вы не можете увеличивать степень сжатия до бесконечности. В какой-то момент в камере сгорания не будет достаточно места для горения, и произойдет детонация .

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

Как мы упоминали ранее, степень динамического сжатия - это та степень сжатия, которая на самом деле происходит внутри двигателя. Вот почему, когда мы говорим о лучшей степени сжатия , мы должны сосредоточиться на DCR, а не на статическом CR. Большинство обычных двигателей имеют DCR в диапазоне от 8: 1 до 8,5: 1, что соответствует статическому CR от 10: 1 до 12: 1. Однако, если вы используете гоночное топливо, оно может быть намного выше, до 10: 1 DSR и 15: 1 статического CR.

Bogna Szyk

.

Сжатие данных / оценка эффективности сжатия - Викиучебники, открытые книги для открытого мира

Из Wikibooks, открытые книги для открытого мира

Перейти к навигации Перейти к поиску
Найдите Сжатие данных / оценка эффективности сжатия в одном из родственных проектов Викиучебника: Викиучебник не имеет страницы с таким точным названием.

Другие причины, по которым это сообщение может отображаться:

  • Если страница была создана здесь недавно, она может быть еще не видна из-за задержки обновления базы данных; подождите несколько минут и попробуйте функцию очистки.
  • Заголовки в Викиучебниках чувствительны к регистру , кроме первого символа; Пожалуйста, проверьте альтернативные заглавные буквы и подумайте о добавлении перенаправления сюда к правильному заголовку.
  • Если страница была удалена, проверьте журнал удалений и просмотрите политику удаления.
.

macos - Расчет степени сжатия hdiutil

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
.

Как определить степень сжатия

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

Степень сжатия двигателя измеряет две вещи: соотношение объема газа в цилиндре, когда поршень находится в верхней точке хода (верхняя мертвая точка, или ВМТ), по сравнению с объемом газа, когда поршень находится в верхней мертвой точке. нижняя часть хода (нижняя мертвая точка или BDC).Проще говоря, степень сжатия - это измерение от сжатого газа до несжатого газа или насколько плотно смесь воздуха и газа помещается в камеру сгорания до того, как она воспламенится свечой зажигания. Чем плотнее прилегает эта смесь, тем лучше она горит и тем больше энергии преобразуется в мощность для двигателя.

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

Метод 1 из 2: вручную измерить степень сжатия

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

Необходимые материалы

  • Калибр
  • Калькулятор
  • Обезжириватель и чистые тряпки (при необходимости)
  • Инструкция производителя (или автомобильная инструкция)
  • Микрометр
  • Блокнот, ручка и бумага
  • Линейка или рулетка (с точностью до миллиметра)

Шаг 1: Очистите двигатель Тщательно очистите цилиндры и поршни двигателя обезжиривателем и чистой тряпкой.

Шаг 2: Найдите размер отверстия .Циферблатный калибр используется для измерения диаметра отверстия или, в данном случае, цилиндра. Сначала определите приблизительный диаметр цилиндра и откалибруйте индикатор внутреннего диаметра с помощью микрометра. Вставьте калибр в цилиндр и несколько раз измерьте отверстие в разных местах цилиндра и запишите результаты измерений. Сложите свои измерения и разделите на то, сколько вы взяли (обычно трех или четырех достаточно), чтобы получить средний диаметр. Разделите это измерение на 2, чтобы получить средний радиус отверстия.

Шаг 3: Рассчитайте размер цилиндра . Используя точную линейку или рулетку, измерьте высоту цилиндра. Измерьте расстояние от самого низа до самого верха, убедившись, что ваша линейка выровнена. Это число рассчитывает ход или площадь, которую поршень перемещает при однократном перемещении вверх или вниз по цилиндру. Для расчета объема цилиндра используйте эту формулу: V = π r 2 h

Шаг 4: Определите объем камеры сгорания .Найдите объем камеры сгорания в руководстве по эксплуатации вашего автомобиля. Объем камеры сгорания измеряется в кубических сантиметрах (CCs) и определяет, сколько вещества требуется для заполнения отверстия камеры сгорания. Если вы собираете двигатель, обратитесь к руководству производителя. В противном случае обратитесь к руководству по эксплуатации автомобиля.

Шаг 5: Найдите высоту сжатия поршня . В мануале найдите высоту сжатия поршня. Это измерение представляет собой расстояние между центральной линией отверстия под палец и верхом поршня.

Шаг 6: Измерьте объем поршня . Снова в руководстве найдите объем купола или тарелки поршня, также измеренный в кубических сантиметрах. Поршень с положительным значением CC всегда называют «куполом», который выступает над высотой сжатия поршня, в то время как «тарелка» - это отрицательное значение, которое учитывает карманы клапана. Обычно поршень имеет как купол, так и тарелку, а конечный объем представляет собой сумму обоих характеристик (купол минус тарелка).

Шаг 7: Найдите зазор между поршнем и декой .Рассчитайте зазор между поршнем и декой с помощью следующего вычисления: (Диаметр отверстия [измерение из шага 2] + Диаметр отверстия × 0,7854 [константа, которая преобразует все в кубические дюймы] × расстояние между поршнем и платформой в верхней мертвой точке [ВМТ]).

Шаг 8: Определите объем прокладки . Измерьте толщину прокладки головки и диаметр отверстия, чтобы определить объем прокладки. Сделайте это почти так же, как и зазор деки (шаг 7): (Диаметр отверстия [измерение из шага 8] + отверстие × 0,7854 × толщина прокладки).

Шаг 9: Рассчитайте степень сжатия . Рассчитайте степень сжатия, решив это уравнение:

Если вы получите число, скажем, 8,75, степень сжатия будет 8,75: 1.

  • Совет : Если вы не хотите вычислять числа самостоятельно, в Интернете есть несколько калькуляторов степени сжатия, которые помогут решить эту проблему; кликните сюда.

Метод 2 из 2: используйте манометр

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

Необходимые материалы

  • Манометр
  • Ключ для свечей зажигания
  • Рабочие перчатки

Шаг 1. Прогрейте двигатель . Дайте двигателю поработать, пока он не прогреется до нормальной температуры. Вы не хотите пробовать это, когда двигатель холодный, потому что вы не получите точных показаний.

Шаг 2: Снимите свечи зажигания . Полностью выключите зажигание и отсоедините одну из свечей зажигания от кабеля, соединяющего ее с распределителем.Откручиваем свечу зажигания.

  • Совет Если ваши свечи зажигания грязные, вы можете использовать это как возможность их почистить.

Шаг 3: Вставьте манометр . Вставьте патрубок манометра в отверстие, где крепилась свеча зажигания. Важно, чтобы сопло было полностью вставлено в камеру.

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

Шаг 5: Проведите проверку давления . В каждом цилиндре должно быть одинаковое давление, и они должны совпадать с номером в руководстве.

Шаг 6: Рассчитайте отношение PSI к степени сжатия . Рассчитайте отношение PSI к степени сжатия. Например, если у вас показание манометра около 15, а ваша степень сжатия должна быть 10: 1, тогда ваш PSI должен быть 150 или 15 × 10/1.

.

Смотрите также