Все-таки собрался и немного потестил разные архиваторы. Результат в табличке.
Набор примеров для учебника по Lazarus (см.) | Образ диска VirtualBox | Дерево исходных кодов Free Pascal с документацией | ||||
---|---|---|---|---|---|---|
Исходный размер | 56.1M | 8.8G | 297M | |||
7z (t/size) | 20.0s (17s) | 411K | 107m (80m) | 2.8G | 3m55s (2m52s) | 125M |
tar.bz2 | 53.6s | 9.3M | 67m | 3.5G | 2m28s | 134M |
tar.xz | 30.1s | 388K | 133m | 2.8G | 4m40s | 125M |
tar.lzma | 30.0s | 387K | 132m | 2.8G | 4m45s | 125M |
tar.lz | 44.5s | 388K | 168m | 2.8G | 7m7s | 125M |
tar.7z | 21.1s (20s) | 392K | 107m | 2.8G | 4m22s | 125M |
Поясню: время в таблице — это «user time», которое представляется единственно адекватным сравнению именно упаковщиков, а не состояния системы в процессе. В скобках же указано время «real», в том случае, если оно оказалось меньше «user». Насколько я могу судить, это однозначно свидетельствует о том, что 7-zip задействовал для работы второе ядро. Правда, отсутствие таких ситуаций у других программ сжатия еще ни о чем не говорит — я не выделял для тестирования какого-то особого времени, а параллельно использовал компьютер в обычном режиме — с существенной, а главное — очень неравномерной нагрузкой…
Для тестирования я использовал следующий примитивный скрипт:
#!/bin/bash
src=$1
echo -e "source: $src\n"
tgt=$1.7z
echo -e "\ttarget: $tgt"
time ( 7z a "$tgt" "$src" > /dev/null )
ls -lh "$tgt"
tgt=$1.tar.bz2
echo -e "\ttarget: $tgt"
time ( tar -c --bzip2 -f "$tgt" "$src" > /dev/null )
ls -lh "$tgt"
tgt=$1.tar.xz
echo -e "\ttarget: $tgt"
time ( tar -c --xz -f "$tgt" "$src" > /dev/null )
ls -lh "$tgt"
tgt=$1.tar.lzma
echo -e "\ttarget: $tgt"
time ( tar -c --lzma -f "$tgt" "$src" > /dev/null )
ls -lh "$tgt"
tgt=$1.tar.lz
echo -e "\ttarget: $tgt"
time ( tar -c --lzip -f "$tgt" "$src" > /dev/null )
ls -lh "$tgt"
tgt=$1.tar.7z
echo -e "\ttarget: $tgt"
time ( tar -c --use-compress-program=p7zip -f "$tgt" "$src" > /dev/null )
ls -lh "$tgt"
Какие можно сделать выводы?
-
Результаты по первому набору данных не тождественны тем, которые у меня получались при использовании упаковки через контекстное меню Konqueror’а. Судя по всему, tar использует максимальное сжатие, в отличие от.
-
Результаты современных архиваторов очень близки друг к другу. 7-zip немного хуже сжимает, однако делает это заметно быстрее. Возможно, все дело вообще в настройках по-умолчанию.
-
«Устаревший» BZip2 работает заметно быстрее более новых форматов, за исключением все того же особого случая с примерами. Как вариант для бэкапов я лично его в своем активе оставлю — иногда время тоже бывает существенным.
-
Хуже всего со временем у формата lzip при отсутствии сколь-нибудь заметного преимущества в степени сжатия. И, надо заметить, из рассмотренных он, пожалуй, наименее популярен.