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

Автор: Юрий Сухов
Дата: 24.05.2004
Все фото статьи

Введение


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

Форматы, поддерживаемые архиваторами
 Архиватор Упаковка и распаковка Только распаковка
 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 и т.д.) - имеют меньшее значение.