- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF142:Сравнение
Материал из Linuxformat.
- Каждый месяц мы сравниваем тысячи программ – а вы можете отдыхать!
Содержание |
Сравнение Архиваторы
Ник Вейч проводит всестороннее тестирование утилит сжатия, прикидывая, что бы такое ужать у себя лично.
В 1980‑х и начале 90‑х значение сжатия было огромным. Предпринимая отчаянные попытки соединиться с BBS (bulletin board system) с помощью самых свежих утилит Amiga, вы грезили о временах, когда все будет делаться быстрее и вам не придется тратить столько же времени на распаковку файлов, сколько уходит на их скачивание.
Прошло несколько десятилетий, и вот уже файлы, с которыми мы работаем, достигли просто пугающих размеров, и в них нередко встроены инструменты сжатия. Ширина полосы пропускания больше не является проблемой, и во многих случаях место на диске тоже не проблема. Тем не менее, неплохо бы иметь быстрый и удобный способ высвободить пару гигов и не ждать так долго, пока загрузится вложение в почтовое сообщение.
Технологии сжатия за этот период продвинулись, но не так, как хотелось бы, поскольку мы сражаемся с экспоненциальной кривой, отображающей способность к сжатию. Многие форматы данных практически несжимаемы, поскольку все их резервы и излишки уже исчерпались.
И все же есть на свете инструменты, которые подхлестывают наши супер-быстрые CPU и гигантские резервы памяти, употребляя новые трюки и хитрости. В нашем Сравнении мы рассматриваем ныне здравствующие новые и старые инструменты. Некоторым не досталось обзора, но они включены в таблицу – сокращенная версия которой в журнале, а полная – он-лайн; например, gzip здесь взят с целью сравнения.
Про наш тест…
Ниже приведенные тесты проводились на двуядерной машине 2,6 Ггц с Fedora 14 и 4 ГБ ОЗУ DDR2. Все указанные скорости приведены исключительно для сравнения, и все утилиты сжатия были использованы с настройками по умолчанию, если не указано иное.
Тест 1 – огромная директория JPEG. Это несколько несправедливо, потому что файлы JPEG сжатию практически не подлежат, но в них есть сжимаемые метаданные.
Тест 2 – пять порций данных по 100 MБ каждая, взятых с жесткого диска, на котором установлен Linux. Здесь должны быть смешанные данные, предоставляющие отличные шансы для сжатия.
Тест 3 – псевдослучайная подборка репрезентативных файлов из дистрибутива Linux. Она включает множество текстовых файлов, но есть в ней и некоторые хитрости, например, файл ISO с мини-дистрибутивом, музыка и крупные бинарники Linux.
RAR
Самое главное | |
| |
Сайт | http://www.rarlab.com |
Версия | 4.00 beta |
Цена | €29 |
Вердикт Linux Format | |
Как и ARJ, реально полезен только для обмена файлами с пользователями Windows. | |
Рейтинг | 5/10 |
- Не так нереально хорош, как вы воображаете.
Появившийся в 1993 формат RAR претерпел за время своего существования немало изменений. Автор оригинальной версии, Евгений Рошаль [Eugene Roshal], предоставил лицензию на программу немецкой компании, которая в настоящее время производит вариант WinRAR и утилиты командной строки для платформ, отличных от Windows.
По части декомпрессии, RAR поддерживает множество форматов, включая и необычные: например, файлы ISO и архивы CAB. Этот формат намного популярнее на платформе Windows и обычно используется для разделения крупных файлов на порции. Это удобно для рассылки больших файлов группам usenet, и утилита WinRAR для Windows имеет действительно большой спрос. Генерирование прилагаемых файлов контроля четности и томов для порций данных облегчает исправление мелких ошибок при передаче данных и гарантирует получение точной копии того, что было отправлено. Однако в системах Unix «родного» формата RAR практически не существует.
Производительность RAR лучше, чем можно было ожидать. Хотя его скорость ниже, чем у большинства инструментов Сравнения, ему на деле удается сэкономить место при работе с разными типами файлов. Алгоритмы сжатия обычно фокусируются на данных определенного типа, и может оказаться, что тестирование выявит лучшую экономию места на файлах, характерных для системы Windows. RAR также не особо озадачили практически несжимаемые файлы изображений, и он неплохо справился с большими образами диска и обычным фрагментом файловой системы. Однако в качестве инструмента командной строки для Linux его использование ограниченно, и лучше всего он подходит в случаях, когда нужно взаимодействие с платформами Windows.
bzip2
Самое главное | |
| |
Сайт | http://bzip.org |
Версия | 1.0.6 |
Цена | Бесплатно под GPL |
Вердикт Linux Format | |
Быстр и широко используется, но за скоростью обращайтесь к lbzip2. | |
Рейтинг | 5/10 |
- Он должен быть в каждом доме – а возможно, уже и есть.
Джулиан Сьюард [Julian Seward] выпустил bzip2 в 1997 под лицензией BSD. Кому интересно, bzip до этого был, но автор отказался от него, так как ему светила вероятность проблем с патентами (ах, эти патенты на ПО, как же мы их любим!). Но вы не горюйте, потому что bzip2 все равно лучше.
Применив комбинацию разных алгоритмов – таких, как кодирование с переменной длиной строки [run-length encoding, RLE] преобразование Барроуза – Уилера [Burrows – Wheeler transform] и тому подобные хитрости – он сразу же прославился в кругах Unix благодаря впечатляющим результатам сжатия по сравнению с тогдашним стандартом, утилитой gzip. Будучи дальновидно написан практически идентичным в использовании, bzip2 скоро стал готовой заменой для всех типов и целей архивирования. Любопытно, что большая часть исходного кода предоставляется с помощью комбинации tar/bzip2 вместо обычной для того времени комбинации tar/gzip.
Слегка разочаровывает, что за минувшие с тех пор 14 лет bzip2 так и не сумел вытеснить gzip – изменить привычки пользователей Unix так же нелегко, как сдвинуть с места континентальный шельф.
Однако для больших объемов архивирования борьба между экономией места и временем, похоже, не стоит трудов. Цифры, полученные нами в Тесте 3, показывают, что bzip2, работая на максимальном сжатии, высвободил несколько процентов места ценой четырехкратного увеличения времени. И если скорость для вас важнее всего, лучший удел для вас по-прежнему gzip… Стоп! Прежде чем это произнести, переверните страницу и взгляните на наш сравнение для lbzip2.
lbzip2
Самое главное | |
| |
Сайт | http://lacos.hu |
Версия | 0.23 |
Цена | Бесплатно под GPL |
Вердикт Linux Format | |
Ускоренная версия старого фаворита Unix. | |
Рейтинг | 7/10 |
- Быстрее, быстрее, быстрее! Запрягите все свои ядра.
По нынешним временам, это интригующий соперник. Используя потоки POSIX, этот инструмент распараллеливает процесс сжатия, чтобы проводить его более чем в одном процессе и затем скомбинировать. Для нас это важно, потому что в наши дни масса машин работает на многоядерных процессорах – а стандартный bzip, да и многие другие инструменты Сравнения справляются только с одним потоком. Иными словами, если у вас двуядерный процессор – например, вроде нашего – на тяжкий труд сжатия пашет только одно ядро, а остальные простаивают. Конечно, остальные ядра могут позаботиться о системе, но это пус-тая трата ресурсов.
Параллелизация задач подразумевает некоторые накладные расходы по времени процессора, потому что требует «диспетчера», распределяющего задачи по потокам и комбинирующего их результаты в конце. Но даже при этом на двуядерной машине вы увидите экономию времени до 40 % в зависимости от задачи. Это самый выдающийся из наших результатов – с теми же настройками lbzip на 35 – 45 % быстрее.
Особо значимо то, что это – один и тот же процесс, и в итоге у вас будут точно те же файлы. Однако в наших тестах результирующие файлы отличались по размеру на байт-другой в ту или иную сторону – возможно, из-за немного разного применения алгоритмов. Очень важно, что файлы, созданные с помощью lbzip2, являются архивами bzip2 – формат не изменился, так что они могут быть переданы и распакованы теми, кто использует bzip2.
Lbzip2 имеется в некоторых репозиториях, и некоторые предлагают совместить его со стандартными командами bzip2 – нет никаких противопоказаний к его использованию хотя бы и на одном ядре.
7zip
Самое главное | |
| |
Сайт | http://www.7zip.org |
Версия | 9.13 beta |
Цена | Бесплатно под GPL |
Вердикт Linux Format | |
Чистое действие LZMA лучше некоторых производных. | |
Рейтинг | 7/10 |
- В свои 12 лет, он все еще считается новичком…
Появившийся в 1999, 7zip (он же 7z или 7za) – относительный новичок в сфере сжатия. Он был написан Игорем Павловым [Igor Pavlov], который также разработал алгоритм LZMA, формирующий метод сжатия по умолчанию. Код 7zip включает и другие методы сжатия – например, bzip2, так что способен поддерживать форматы, отличные от формата по умолчанию 7z.
И хотя код его открыт, основное внимание разработчиков уделяется платформе Windows, где 7z пользуется достаточной популярностью, и код сопровождается приятным интерфейсом. Основной исходный код подвергался поправкам, а ряд проектов использовал LZMA SDK для создания весьма похожих вариантов. Один из них – xz, другие включают p7zip. Для нашего теста мы скомпилировали исходный код оригинала.
Глядя на результаты теста, легко решить, что 7z никак не использует предлагаемые несколько ядер. Вообще-то это многопотоковое приложение, но даже будучи таковым, оно работает чуть медленнее однопотокового архиватора bzip2 и вдвое медленнее lbzip2. Мы могли бы сделать определенную скидку этому коду, поскольку он компилировался из исходника общего назначения и не подстроен специально для Linux, но он работает лучше, чем pxz, параллелизованная версия производного программы сжатия xz.
Область, где данный алгоритм работает очень хорошо – распаковывание: эта утилита и утилита xz работают безотказно лучше, чем все остальные в пакете (помимо gzip, которая, кстати, не так уж и сжата).
7z – полезный инструмент, и способен стать еще полезнее на быстрых машинах или если нужно хорошее качество сжатия и быстрое распаковывание (например, при раздаче приложений и данных).
Xz
Самое главное | |
| |
Сайт | http://tukaani.org/xz |
Версия | 5.0 |
Цена | Бесплатно под GPL |
Вердикт Linux Format | |
Несколько разочаровывает производительность – для предполагаемого преемника bzip. | |
Рейтинг | 7/10 |
- Название, наводящее на вопрос «Почему?»
Xz – еще одна программа, которая покушается заменить gzip, с такими же опциями и синтаксисом. Она работает на тех же алгоритмах LZMA, что используются в 7z, так что результаты будут практически одинаковы.
Обескураживает, что алгоритмы LZMA должны бы были проглотить все наши тестовые файлы и дать хорошую экономию места без особого увеличения времени, однако полученные цифры говорят об обратном. Результаты сжатия хороши, и в режиме по умолчанию xz, похоже, настроен на большее сжатие, чем 7z, но цена этому эффекту – немалые временные затраты. Пусть даже мы проигнорируем результаты первого теста, который бьет по инструментам, пытающимся сделать свою работу хорошо да еще уложиться в установленные временные рамки: xz не выглядит вдохновляюще и в других тестах. Например, ради экономии места на пару процентов он тратит вдвое больше времени, чем bzip2, а из-за своей однопоточной природы примерно во столько же раз хуже 7z, при создании файла почти такого же размера.
Есть также и параллелизованная версия xz – pxz; мы включили отдельные данные по ней в таблицу в конце. Она дает значительный выигрыш по времени, но не такой, как у lbzip2 с ее алгоритмом bzip2. Ей удается сэкономить до 35 % времени, что весьма радует и выводит ее вперед по сравнению с другими однопоточными архиваторами в плане скорости, но все же не позволяет ей встать вровень с другими многопоточными инструментами, и даже с 7z.
Как мы уже упоминали в обзоре 7z, преимущества этого приложения – хорошее сжатие и быстрое распаковывание; именно поэтому Slackware начал использовать его для создания пакетов. Возможно, для распространения пакетов это и хороший выбор, но он не идеален, если вы занимаетесь архивированием.
Lrzip
Самое главное | |
| |
Сайт | http://ck.kolivas.org/apps/lrzip |
Версия | 0.46 |
Цена | Бесплатно под GPL |
Вердикт Linux Format | |
Потрясающая производительность и отличный кандидат на повсеместное использование. | |
Рейтинг | 9/10 |
- Благодаря длительному наблюдению, делает неплохую работу.
Lrzip – относительный новичок в мире утилит сжатия; это производное утилиты rzip. Основное внимание здесь уделено сжатию больших файлов, и лучше всего lrzip работает в системах с достаточными объемами памяти и крупными файлами для сжатия (более 100 MБ). Это объясняется проведением широкомасштабных проверок на избыточность [redundancy checks] для сравнения областей данных, в надежде сэкономить место.
Метод по умолчанию для собственно сжатия применяет алгоритмы LZMA, как 7z, а также архиваторы xz и pxz нашего Сравнения. LZMA быстро превращается в алгоритм-стандарт, несмотря на неровную производительность утилит на его основе. Каким бы секретным соусом ни был приправлен lrzip, он, похоже, работает, поскольку перемалывает крупные файлы куда быстрее других LZMA-утилит.
Помимо LZMA, вы можете выбрать алгоритмы LZO, которые отличаются безумной скоростью, но зато не обеспечивают достойной степени сжатия, или обратиться к жутко медлительному ZPAQ со сжатием по максимуму. Программа ZPAQ имеется также в отдельно взятом виде, но ее компиляция крайне путаная. Тем не менее мы включили ее показатели для полноты картины. При помощи крайних мер ей, кажется, удается создавать самые компактные архивы. Это скорее доказательство концепции, чем повседневная утилита сжатия, по причине огромного количества времени и ресурсов, требуемых для создания файлов. Средняя скорость ZPAQ всего около 170k в секунду! А главная беда – на распаковку уходит примерно столько же.
Lrzip умудряется добиться хороших результатов по времени и хорошей степени сжатия, и имеет разнообразные опции, что заставляет взглянуть на него повнимательнее.
PeaZip
Самое главное | |
| |
Сайт | http://www.peazip.org |
Версия | 3.6 |
Цена | Бесплатно под LGPL |
Вердикт Linux Format | |
Определенно полезный инструмент, отлично работает с KDE и Gnome. | |
Рейтинг | 7/10 |
- Традиционный zip-архиватор с выдумкой и файловым менеджером внутри.
PeaZip несколько выделяется среди выбранных нами архиваторов. В отличие от прочих, это приложение с GUI работает с большим количеством архивных форматов, заодно предлагая другие функции. Конечно же, в Linux имеются такие инструменты, как File Roller и Ark, которые выполняют схожие задачи и служат интерфейсами для большинства рассмотренных здесь других инструментов архивирования, но PeaZip заслуживает упоминания, потому что еще и создает собственный формат архива.
Файлы PEA ставят целью быть современной интерпретацией формата RAR – контейнера для разных видов сжатия, способного к тому же иметь добавочные уровни, такие как разнообразные типы сжатия, или делиться на порции, приемлемые для распространения. Родной формат этого архива – всего лишь вариация алгоритмов Zip. Вне мира Linux, архивный формат Zip по-прежнему применяется широко, в основном по причине совместимости. И хотя PeaZip работает и с другими форматами, в таблице мы учитывали его производительность на основании создания родных PEA-файлов поалгоритмам Zip.
Как следствие, производительность не особо впечатляет. Он сумел угнездиться в десятке лидеров по скорости, но степень сжатия низкая, и по обоим параметрам его часто превосходил lbzip2. Тем не менее, PeaZip неплохо себя ведет и не заглатывает по умолчанию все ваше ОЗУ; а значит, в обделенных ресурсами системах его производительность может выглядеть лучше. При использовании лучших из имеющихся режимов сжатия, он оказывается практически на равных с 7z.
Помимо архивирования, PeaZip пригоден как менеджер файлов и предусматривает скины для рабочих столов GTK/Gnome и KDE. Возможно, он больше нацелен на пользователей Windows, но у него открытый код и любовное отношение к Linux.
ARJ
Самое главное | |
| |
Сайт | http://arj.sourceforge.net |
Версия | 3.10.22 |
Цена | Бесплатно под GPL |
Вердикт Linux Format | |
Это архиватор забыт современностью и полезен только для поддержки устаревших данных. | |
Рейтинг | 9/10 |
- Все еще цепляется за существование, хотя и без особого энтузиазма.
Появившийся в 90‑х годах формат ARJ завоевал популярность не сразу, но все же стал основным для некоторых видов архивирования. Подобно RAR, он поддерживает простое разделение файла на порции для архивирования на диски или, чаще, для деления файла на порции с целью облегчения его передачи или распространения.
Изначально программа arj была написана для DOS, но вскоре стала полноценным приложением для настольных систем Windows, и основное его трудоустройство приходится именно на эту платформу. Была создана версия с открытым кодом этой программы, которая, естественно, нашла дорогу в Linux, и хотя этот формат никогда не был особо популярен чисто в Linux, он дает преимущество при кросс-платформенной передаче файлов.
Наши результаты показали, что эта программа твердо занимает позицию быстрого выполнения работы, но за счет не слишком сильного сжатия. Во втором тесте она лишь немного уступила суперскоростному gzip, но выдала худшие результаты по экономии места в двух последних тестах. То, что она не показывает лучшей производительности, чем стандартная программа gzip в системах Unix – вероятно, одна из причин, по которой ею редко пользуются на машинах Linux, хотя она, тем не менее, по-прежнему поддерживается и имеется практически в каждом дистрибутиве.
В борьбе с форматом RAR arj не сдавался долго, но за последние годы даже коммерческая версия получила минимум обновлений, и мы вправе утверждать, что этот формат попал в список вымирающих. Приятно знать, что он существует, но он не для повседневного использования. Даже для деления файлов на порции и отправки файлов в Windows, формат RAR будет гораздо лучшим выбором.
Вердикт
Сперва – короткое замечание: здесь у нас просто нет места, чтобы целиком воспроизвести таблицу полученных непосильным трудом результатов тестирования, так что мы выложили все цифры полностью на наш сайт, на тот случай, если вам захочется оценить их самим.
Наш первый вывод, сделанный на основе всех данных, собранных для этого Сравнения, таков: если у вас многоядерная машина Linux, стоит обратить внимание на один из многопотоковых инструментов. На двуядерной машине разница очевидна. А если ядер больше двух, она вообще может изменить ваше мировосприятие.
Что касается самих тестов – первый из них был подловат, поскольку, независимо от применяемого алгоритма, вряд ли можно добавочно сжать то, что уже и так являет собой данные с высокой степенью сжатия. Труднее для сжатия только сугубо стохастические данные, поэтому мы их избегали.
Утилиты arj и RAR, как вскоре стало ясно, полезны только для своих кузенов под Windows или для обмена файлами с ними через электронную почту. Что касается более линуксовых инструментов – для нас стало сюрпризом, насколько хорошо волокут старые кони. Bzip2 (вместе с многопоточным вариантом lbzip2) и gzip отлично справляются с задачей архивирования и умудряются достичь невероятной быстроты: архивирование файла и простое копирование его же особо не различаются, что весьма удобно со всех точек зрения. PeaZip заслуживает особой чести за простоту в использовании и предоставление интерфейса для многих из этих утилит.
Затем идут инструменты на основе LZMA, которые, возможно, покажутся гостями из будущего. Несколько удивило, что обычный инструмент 7z показался лучше, чем xz/pxz, любимые в Slackware. Для приложений, в которых скорость распаковки является ключевым моментом, они безусловно, впереди всех. В этом случае ничто не сравнится с pxz, кроме самого gzip.
Если говорить о производительности в целом, то победителем оказывается lrzip, который, благодаря популярному алгоритму LZMA, быстр и экономен. Поэтому мы и поместили его на верхнюю ступеньку пьедестала.