11.02.2020 17:45
OlegON
 
Продолжаю устоявшуюся традицию сравнивать архиваторы раз в год. Предыдущее тестирование было здесь: https://olegon.ru/showthread.php?t=31993

В этот раз добавились еще архиваторы, а 7z пополнился еще одним алгоритмом сжатия.
Сначала я использовал файл дампа форума, а потом tar каталога /usr, причем, оба файла усекались до 1Гб командой truncate -s 1G. Для понимания возможностей многопоточности я привожу реальное и пользовательское время. Т.е. если они не совпадают, то пользовательское - сумма времени всех потоков.

7z a -m0=PPmd -mx=9 -ms=on
real 2m10,659s
user 2m9,511s
174968313
real 3m2,862s
user 3m1,726s
305738283

7z a -t7z -mx=9 -mfb=256 -ms=on test.dmp.7z test.dmp
real 2m6,223s
user 13m7,753s
159094820
real 1m55,317s
user 11m49,176s
207059481

7z a test.dmp.7z test.dmp
real 1m16,050s
user 7m11,106s
169237972
real 1m5,217s
user 7m12,959s
224278359

lzop --best test.dmp
real 2m53,496s
user 2m53,103s
281995966
real 4m9,602s
user 4m9,100s
413910832

lzop test.dmp
real 0m2,392s
user 0m2,201s
377248681
real 0m2,269s
user 0m2,057s
515580451

lz4 -12 test.dmp
real 1m38,772s
user 1m33,747s
282094946
real 2m20,686s
user 2m20,290s
436926842

lz4 test.dmp
real 0m2,129s
user 0m1,917s
368121385
real 0m1,969s
user 0m1,720s
524301830

xz -9e -k test.dmp
real 8m58,129s
user 8m56,528s
158246052
real 8m14,180s
user 8m12,930s
205237316

xz -k test.dmp
real 5m49,056s
user 5m48,002s
165424988
real 5m15,001s
user 5m14,179s
238395036

zstd -z -22 --ultra test.dmp
real 9m7,427s
user 9m6,146s
178376869
real 7m54,543s
user 7m53,544s
238395036

zstd -z test.dmp
real 0m5,525s
user 0m4,343s
250981314
real 0m4,458s
user 0m4,525s
354219347

zpaq a test.dmp.zpaq test.dmp -m5
real 9m18,441s
user 71m47,606s
126225553
real 9m52,103s
user 74m1,930s
199808584

zpaq a test.dmp.zpaq test.dmp
real 0m10,835s
user 0m51,773s
263359657
real 0m11,326s
user 1m8,463s
355827097

brotli -Z -k test.dmp
real 34m44,170s
user 34m40,808s
173354480
real 38m7,739s
user 38m4,708s
217923873

brotli -k test.dmp
real 34m27,357s
user 34m24,473s
173354480
real 38m7,614s
user 38m4,610s
217923873

bzip2 -9 -k test.dmp
real 1m14,714s
user 1m14,406s
203016650
real 1m13,030s
user 1m12,695s
353905229

bzip2 -k test.dmp
real 1m14,645s
user 1m14,330s
203016650
real 1m13,105s
user 1m12,792s
353905229

Сводная таблица, сортировка по сжатию дампа
Код:
zpaq a -m5                      71m47,606s  126225553   74m1,930s   199808584
xz -9e -k                       8m56,528s   158246052   8m12,930s   205237316
7z a -t7z -mx=9 -mfb=256 -ms=on 13m7,753s   159094820   11m49,176s  207059481
xz -k                           5m48,002s   165424988   5m14,179s   238395036
7z a                            7m11,106s   169237972   7m12,959s   224278359
brotli -Z -k                    34m40,808s  173354480   38m4,708s   217923873
7z a -m0=PPmd -mx=9 -ms=on      2m9,511s    174968313   3m1,726s    305738283
zstd -z -22 --ultra             9m6,146s    178376869   7m53,544s   238395036
bzip2 -9 -k                     1m14,406s   203016650   1m12,695s   353905229
zstd -z                         0m4,343s    250981314   0m4,525s    354219347
zpaq a                          0m51,773s   263359657   1m8,463s    355827097
lzop --best                     2m53,103s   281995966   4m9,100s    413910832
lz4 -12                         1m33,747s   282094946   2m20,290s   436926842
lz4                             0m1,917s    368121385   0m1,720s    524301830
lzop                            0m2,201s    377248681   0m2,057s    515580451
Сводная таблица, сортировка по сжатию бинарников
Код:
zpaq a -m5                      71m47,606s  126225553   74m1,930s   199808584
xz -9e -k                       8m56,528s   158246052   8m12,930s   205237316
7z a -t7z -mx=9 -mfb=256 -ms=on 13m7,753s   159094820   11m49,176s  207059481
brotli -Z -k                    34m40,808s  173354480   38m4,708s   217923873
7z a                            7m11,106s   169237972   7m12,959s   224278359
xz -k                           5m48,002s   165424988   5m14,179s   238395036
zstd -z -22 --ultra             9m6,146s    178376869   7m53,544s   238395036
7z a -m0=PPmd -mx=9 -ms=on      2m9,511s    174968313   3m1,726s    305738283
bzip2 -9 -k                     1m14,406s   203016650   1m12,695s   353905229
zstd -z                         0m4,343s    250981314   0m4,525s    354219347
zpaq a                          0m51,773s   263359657   1m8,463s    355827097
lzop --best                     2m53,103s   281995966   4m9,100s    413910832
lz4 -12                         1m33,747s   282094946   2m20,290s   436926842
lzop                            0m2,201s    377248681   0m2,057s    515580451
lz4                             0m1,917s    368121385   0m1,720s    524301830
Сначала была идея ввести суммарный показатель сжатия, однако, решил не сравнивать теплое с мягким и оставил в разных таблицах.
Итак, если смотреть на результаты, то лидеры все прежние. С чудовищным временем и загрузкой во много потоков (есть возможность это настраивать) идет zpaq. Обратите внимание, что этот архиватор кроссплатформенный и уже достаточно давно существует, причем, с открытым кодом, чтобы заподозрить его внезапную кончину. Однако, конечно, последняя версия вышла в 2016, что немного беспокоит. Тем не менее, если нужно максимально зажать, то это вариант. В качестве дополнительных свойств архива и инкрементальный архив, и дедубликация и прочее, в общем, стоит посмотреть и изучить его для своих нужд. Из неочевидного - рекомендую протестировать распаковку. Распаковывается, как и раньше, достаточно долго.
Дальше в лидерах xz. Чем он мне нравится - полной опенсорсностью и простотой. С последними версиями еще ускорили его работу, так что время сократилось до достаточно терпимых величин. Обратите внимание, что, как будет видно дальше, лидерство с 7z у xz попеременное. Но, у меня в большинстве случаев, экстремальный xz уделывает экстремальное сжатие 7z. Обратите внимание, что почему-то ультра-сжатие zstd по размерам с точностью до байта сошлось с xz с параметрами по умолчанию.

В общем и целом, если нужно как следует сжать в архив, я бы выбрал xz. Просто в силу распространенности и обкатанности алгоритма. Если сжать только на время передачи пользователю под Win - 7zip. Если с каналом связи для передачи архива полный голяк - zpaq.

Сводная таблица, отсортированная по пользовательскому времени
Код:
lz4                             0m1,917s    368121385   0m1,720s    524301830
lzop                            0m2,201s    377248681   0m2,057s    515580451
zstd -z                         0m4,343s    250981314   0m4,525s    354219347
zpaq a                          0m51,773s   263359657   1m8,463s    355827097
bzip2 -9 -k                     1m14,406s   203016650   1m12,695s   353905229
lz4 -12                         1m33,747s   282094946   2m20,290s   436926842
7z a -m0=PPmd -mx=9 -ms=on      2m9,511s    174968313   3m1,726s    305738283
lzop --best                     2m53,103s   281995966   4m9,100s    413910832
xz -k                           5m48,002s   165424988   5m14,179s   238395036
7z a                            7m11,106s   169237972   7m12,959s   224278359
zstd -z -22 --ultra             9m6,146s    178376869   7m53,544s   238395036
xz -9e -k                       8m56,528s   158246052   8m12,930s   205237316
7z a -t7z -mx=9 -mfb=256 -ms=on 13m7,753s   159094820   11m49,176s  207059481
brotli -Z -k                    34m40,808s  173354480   38m4,708s   217923873
zpaq a -m5                      71m47,606s  126225553   74m1,930s   199808584
На самом деле таблица достаточно бессмысленная, поскольку на скорость влияет достаточно много факторов, такие, как, например, скорость дисков. Я сейчас расскажу, как все летает, а у кого-то диск тормозной и результаты будут другими. Да и в целом, у большинства архиваторов степень компрессии можно понизить, заставляя плакать носитель. Но, если уж провел испытание - lz4 рвет в скорости однопоточного сжатия всех. Однако же, если предпочитать, то я бы выбрал zstd с параметрами по умолчанию. При очень большой скорости он гораздо лучше жмет. Новичок lzop тоже неплохие показатели скорости выдал, но с ним не все так просто даже на Linux, потому я ждал от него либо чего-то экстраординарного, либо ... в общем, вычеркиваю.
12.02.2020 17:53
OlegON
 
Обнаружил интересную ссылку на форуме. https://olegon.ru/showthread.php?t=11567
Решил для теста использовать еще и этот файлик, чудом завалявшийся у меня в архивах.

Цитата:
OlegON neverhood.iso.7z 576140K
neverhood.iso.xz 572769K
neverhood.iso.zpaq 568317K
С 2012 года ситуация немного изменилась, zpaq остался лидером, отвоевав еще полмегабайта, а вот 7z догнал и даже немного перегнал xz, который остался с неизменным результатом.
neverhood.iso.xz 572769K
neverhood.iso.7z 572703K
neverhood.iso.zpaq 567860K

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.