7z vs lrzip. Сравнение двух архиваторов.
Пришло мне в голову сравнить архиваторы 7z (7zip) и lrzip. Ничего особенного от этого сравнения я не ждал и, как выяснилось, зря. Получилось интересно.
Кто не в курсе: lrzip – это такой архиватор, созданный небезызвестным Коном Коливасом (Con Kolivas) сотоварищи, и предназначенный "для архивирования больших файлов", как сказано в мане. Ну, а про 7 zip и Игоря Павлова, я полагаю, все знают.
Работают оба архиватора вроде бы на основе одного метода, LZMA, разработанного Игорем Павловым, но, конечно, имеют свои сугубые особенности, влезать в которые нам сейчас влом. О том и другом я еще надеюсь написать отдельно и в свое время.
Итак, имеется двухъядерный процессор Athlon X2 7750 Black Edition (2,7 ГГц), оперативка DDR-2 объемом 4 гига, всё это под управлением Linux Mint 16 Cinnamon.
Цель: заархивировать папку с данными (для хранения, скажем, на облаке). Размер папки 2 354 Мб, в ней 7009 вложенных директорий и 255 243 файлов, большей частью мелких (html страницы).
Что вышло
lrzip
Команда в консоли:
(lrztar – это обертка lrzip для работы с директориями; опция -l – "lzo compression (ultra fast)", опция -p задает число потоков для распараллеливания процесса, её вполне можно и не задавать, утилита должна по идее сама разобраться. Точка со слешем на конце означает, что мы находимся в архивируемой директории, в противном случае надо задать путь до нее.)
Вывод в консоли:
Последние три строки – отчет команды time (как видим, времена практически совпадают).
Интересно отметить, что (судя по Conky и апплету Multi-Core System Monitor) никакого распределения нагрузки на два ядра и близко не было. Зато проц как бы и не нагрелся за всё время архивации, разве что на градус-полтора (максимум на пять на непродолжительное время), да и нагрузка на него была, в целом, плёвая.
Размер полученного архива Archive.lrz – 1 229 Мб (то есть compression ratio вышло чуть хуже, чем показала утилита, но я уже упомянул, что размеры приблизительные, по данным MC).
7z
Команда в консоли:
(Опция -t7z говорит о том, что мы создаем архив типа 7z, -mx=9 – что применяем максимальную степень сжатия. Работаем, как и в первом случае, внутри архивируемой папки).
Вывод в консоли:
Размер полученного архива 1 054 Мб.
В процессе наблюдалась четкая "синхронность", оба ядра были нагружены практически одинаково (и весьма ощутимо, от 35-40 до 70-80 %, в результате чего проц нагревался градусов на 10-12 от t° покоя, особенно на массивах графических файлов, и чувствуя, что дело серьезное, начинал разгонять кулер).
Итак, выбирайте: или ощутимая (в некоторых обстоятельствах), но не очень большая экономия места, или восемь с половиной минут против сорока трех(!). Такой большой разницы я не ожидал.
lrzip – попытка реванша
Хорошо, но почему мы взяли lrzip в режиме "fast", когда у него тоже есть супер-режим "zpaq compression (best, extreme compression, extremely slow)"? Получилось не совсем спортивно. Даём утилите шанс побороться с 7z не в скорости, а в силе (сжатия).
Команда в консоли:
И вот тут моему процу на старости лет получился форменный суровый бенчмарк...
Вывод в консоли:
В течение почти всех этих 83 минут оба ядра были нагружены по полной, кулер шарашил на все деньги, зло подвывая, как мокрый шмель (и удержал-таки температуру на среднем уровне 53 – 54°, не давая ей даже в пиках подниматься выше 55°), used-память временами была побольше половины, т.е. за 2 гига, немного накапало даже в своп, и вообще я уже не чаял, когда этот кошмар наконец кончится. И всё это для того, чтобы насилуя ресурсы машины, "превзойти" 7z по времени работы вдвое и при этом даже немного уступить ему в степени сжатия! Мда.
Контрольный выстрел: tar + xz
Это, собственно, на сегодня мой штатный инструмент, который иногда дополняется 7z.
Команда:
Вывод (четверть миллиона строк я, естественно, опускаю):
Результат, как видим уступает по времени утилите 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 очень хорош, когда надо "доужать" архив, полученный другими утилитами. Более плотное изучение этого вопроса – с примерами и цифрами – я еще как-нибудь предприму.
2014-06-22 в 16:13:41
Вы честно предупредили, что архиваторы "имеют свои сугубые особенности, влезать в которые нам сейчас влом".
И жаль.
Стандартные настройки, на мой взгляд, не оптимальны. А различных комбинаций параметров - не счесть. Можно пройти мимо удачных, и сделать "неправильные" выводы.
Вот подробные тесты, для интереса:
http://72.233.112.78:9000/topic.cgi?forum=5&topic=8076&start=820#7
2014-06-22 в 19:54:00
Спасибо за столь полезный и содержательный коммент. И мне, и, полагаю, юзерам, которые забредут на эту страничку Mintmem, будет весьма интересно познакомиться с гораздо более содержательным материалом на данную тему.
А что касается моего скромного поста, то, как я и отметил, он совершенно не претендует на статус сколько-нибудь серьезного тестирования. Скажу даже, что к тестированиям у меня вообще отношение двойственное: читаю их с большим интересом, а на выводы смотрю с осторожностью. Не говоря уже о бесчисленных нюансах железного и программного обеспечения, остаются еще и психологические тонкости: я, например, вполне субъективно (и, возможно, несправедливо) недолюбливаю некоторые архиваторы и предпочитаю другие
Но, повторяю, прочитать такой материал, как по Вашей ссылке, всегда очень интересно, полезно, а кому-то может быть и важно.
2016-01-23 в 16:29:46
Ха, для lzip выбран самый быстрый метод сжатия, а для 7zip - самый медленный. А потом ВНЕЗАПНО 7z оказался медленее.
2016-01-23 в 20:54:50
Где это я говорил "внезапно"?
Я лишь написал, что такой большой разницы не ожидал. И хотя пока не собираюсь повторять свои "псевдотесты", тем не менее по ходу жизни всё больше убеждаюсь, что lrzip очень быстр.