7z vs lrzip. Сравнение двух архиваторов.

/ Просмотров: 4001

Пришло мне в голову сравнить архиваторы 7z (7zip) и lrzip. Ничего особенного от этого сравнения я не ждал и, как выяснилось, зря. Получилось интересно.

Кто не в курсе: lrzip – это такой архиватор, созданный небезызвестным Коном Коливасом (Con Kolivas) сотоварищи, и предназначенный "для архивирования больших файлов", как сказано в мане. Ну, а про 7 zip и Игоря Павлова, я полагаю, все знают.

Работают оба архиватора вроде бы на основе одного метода, LZMA, разработанного Игорем Павловым, но, конечно, имеют свои сугубые особенности, влезать в которые нам сейчас влом. О том и другом я еще надеюсь написать отдельно и в свое время.

Кстати:    остерегаю тех, кто будет читать данный материал, воспринимать его как серьезный тест. Такой цели я не ставил (да и тестировщик из меня, по слову Остапа, как из собачьего хвоста сито). Цель моя была в том, чтобы подобрать инструмент "себе по руке" для конкретных задач. Поэтому я не заморачивался точными размерами директорий и архивов, а привожу их так, как показывает MC.

Итак, имеется двухъядерный процессор Athlon X2 7750 Black Edition (2,7 ГГц), оперативка DDR-2 объемом 4 гига, всё это под управлением Linux Mint 16 Cinnamon.

Цель: заархивировать папку с данными (для хранения, скажем, на облаке). Размер папки 2 354 Мб, в ней 7009 вложенных директорий и 255 243 файлов, большей частью мелких (html страницы).

Что вышло

lrzip

Команда в консоли:

time lrztar -p 2 -l -o Archive.lrz ./

(lrztar – это обертка lrzip для работы с директориями; опция -l – "lzo compression (ultra fast)", опция -p задает число потоков для распараллеливания процесса, её вполне можно и не задавать, утилита должна по идее сама разобраться. Точка со слешем на конце означает, что мы находимся в архивируемой директории, в противном случае надо задать путь до нее.)

Вывод в консоли:

Compression Ratio: 2.074. Average Compression Speed: 4.942MB/s. Total time: 00:08:35.25 real 8m35.269s user 3m11.628s sys 0m27.845s

Последние три строки – отчет команды time (как видим, времена практически совпадают).

Интересно отметить, что (судя по Conky и апплету Multi-Core System Monitor) никакого распределения нагрузки на два ядра и близко не было. Зато проц как бы и не нагрелся за всё время архивации, разве что на градус-полтора (максимум на пять на непродолжительное время), да и нагрузка на него была, в целом, плёвая.

Размер полученного архива Archive.lrz – 1 229 Мб (то есть compression ratio вышло чуть хуже, чем показала утилита, но я уже упомянул, что размеры приблизительные, по данным MC).

7z

Команда в консоли:

time 7z a -t7z -mx=9 Archive.7z

(Опция -t7z говорит о том, что мы создаем архив типа 7z, -mx=9 – что применяем максимальную степень сжатия. Работаем, как и в первом случае, внутри архивируемой папки).

Вывод в консоли:

7-Zip 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 p7zip Version 9.20 (locale=ru_RU.UTF-8,Utf16=on,HugeFiles=on,2 CPUs) Scanning Creating archive Scrapbooks.7z Compressing HTML_CSS_new/data/20120213001816/01120a79e0f91b5803fa32cbd46c578f Compressing Linux_Scrab/data/20100831024823/012dd78ca8044d3e663bfa8b0d8caefa Compressing Inet_temp/data/20120322214225/0143626c32bc932d0693083265a451a2 ... и так далее, всего четверть миллиона строк... Everything is Ok real 43m15.021s user 28m45.804s sys 0m33.990s

Размер полученного архива 1 054 Мб.

В процессе наблюдалась четкая "синхронность", оба ядра были нагружены практически одинаково (и весьма ощутимо, от 35-40 до 70-80 %, в результате чего проц нагревался градусов на 10-12 от t° покоя, особенно на массивах графических файлов, и чувствуя, что дело серьезное, начинал разгонять кулер).

Итак, выбирайте: или ощутимая (в некоторых обстоятельствах), но не очень большая экономия места, или восемь с половиной минут против сорока трех(!). Такой большой разницы я не ожидал.

lrzip – попытка реванша

Хорошо, но почему мы взяли lrzip в режиме "fast", когда у него тоже есть супер-режим "zpaq compression (best, extreme compression, extremely slow)"? Получилось не совсем спортивно. Даём утилите шанс побороться с 7z не в скорости, а в силе (сжатия).

Команда в консоли:

time lrztar -p 2 -z -o Archive.lrz ./

И вот тут моему процу на старости лет получился форменный суровый бенчмарк...

Вывод в консоли:

Compression Ratio: 2.358. Average Compression Speed: 0.511MB/s. Total time: 01:23:11.04 real 83m11.090s user 142m13.043s Получилось 1 083Мб sys 0m32.690s

В течение почти всех этих 83 минут оба ядра были нагружены по полной, кулер шарашил на все деньги, зло подвывая, как мокрый шмель (и удержал-таки температуру на среднем уровне 53 – 54°, не давая ей даже в пиках подниматься выше 55°), used-память временами была побольше половины, т.е. за 2 гига, немного накапало даже в своп, и вообще я уже не чаял, когда этот кошмар наконец кончится. И всё это для того, чтобы насилуя ресурсы машины, "превзойти" 7z по времени работы вдвое и при этом даже немного уступить ему в степени сжатия! Мда.

Контрольный выстрел: tar + xz

Это, собственно, на сегодня мой штатный инструмент, который иногда дополняется 7z.

Команда:

time tar -Jvcf Archive.tar.xz *

Вывод (четверть миллиона строк я, естественно, опускаю):

real 25m36.057s user 24m17.791s sys 0m33.349s

Результат, как видим уступает по времени утилите lrztar с опциями -p 2 и -l, а по сжатию – вообще всем участникам. В процессе tar потреблял прилично ресурсов, поднимая t° проца до 52°, но память в основном использовал кэшированную. После предыдущего кошмара всё это показалось мне (и, полагаю, процессору) сущими пустяками.

Для наглядности сведу результаты в табличку.

Сравнительные результаты
Архиватор Размер архива Степень сжатия Время архивирования
lrzip 1 229 Мб ~ 1,915 8 min 36 sec
lrzip+zpaq 1 083 Мб ~ 2,174 83 min 11 sec
7z (mx=9) 1 054 Мб ~ 2,233 43 min 15 sec
tar+xz 1 300 Мб ~ 1,81 25 min 36 sec

Мои выводы для себя

Исключительно малое время архивирования вкупе с приличной степенью сжатия заставляют обратить на lrzip самое пристальное внимание. Буду исследовать ее дальше. Правда, на другой системе утилита на той же задаче показала почему-то время побольше (10 с небольшим минут), однако и такой результат неплох. К плюсам lrzip можно отнести и возможность шифрования архива средствами самóй утилиты (как и 7zip).

Кроме прочего, надо помнить следующее: порт 7zip для Linux при всех своих достоинствах, имеет один важный изъян: он не сохраняет данные о владельце и правах на файлы, поэтому для серьезного системного бэкапа использовать его без связки с линуксовыми архиваторами нельзя. lrzip написан "коренным" (от слова core) линуксоидом, и никаких ограничений в применении не имеет.

Однако 7zip очень хорош, когда надо "доужать" архив, полученный другими утилитами. Более плотное изучение этого вопроса – с примерами и цифрами – я еще как-нибудь предприму.

Комментариев: 4 RSS

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

И жаль.

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

Вот подробные тесты, для интереса:

http://72.233.112.78:9000/topic.cgi?forum=5&topic=8076&start=820#7

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

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

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

Ха, для lzip выбран самый быстрый метод сжатия, а для 7zip - самый медленный. А потом ВНЕЗАПНО 7z оказался медленее.

Где это я говорил "внезапно"?

Я лишь написал, что такой большой разницы не ожидал. И хотя пока не собираюсь повторять свои "псевдотесты", тем не менее по ходу жизни всё больше убеждаюсь, что lrzip очень быстр.

Оставьте комментарий

Комментарий будет опубликован после проверки

(обязательно)